簡體   English   中英

使用本地文件夾中的Javascript讀取XML文件

[英]Read XML File using Javascript from a Local Folder

我正在嘗試學習如何讀取XML文件中的網頁數據。 這是一個靜態HTML頁面。 我不想要一個Web服務器,我不能使用Ajax。 XML文件是本地的(與HTML文件位於同一目錄中)。 我希望這能在Chrome瀏覽器中運行。

我需要做的是:

  1. 閱讀onLoad事件頁面上的XML文件。
  2. 使用innerHTML將XML數據插入div。

我的問題是閱讀XML文件。 我發現我發現的所有示例只有在運行Web服務器時才有效,我必須避免。

如果您正在閱讀另一個文件,那么使用前端JS執行此操作的唯一方法是另一個請求(ajax)。 如果這是node.js,它將是不同的,因為節點可以訪問文件系統。 或者,如果您將xml放入同一頁面上的javascript字符串中,則可以對其進行操作。 有許多好的庫(jquery的parseXML)。

由於您只定位Chrome,因此您可以查看文件API 您必須提示用戶選擇文件或將其放入頁面的特定區域,這可能是您寧願避免的。 以下HTML5 Rocks文章應該有所幫助。

假設HTML,XML和瀏覽器都在同一台機器上,您可以嘗試使用HTML中的Iframe,它使用類似文件的URL來引用XML:\\。

原始答案在這里: https//stackoverflow.com/a/48633464/8612509

所以,我可能會遲到一點,但這是為了幫助那些一直在尋找解決方案的人。

首先,如果您沒有在服務器上運行HTML文件,則需要在瀏覽器中允許CORS。 其次,我發現大多數人在這些線程中引用的代碼片段不適用於加載本地XML文件。 試試這個(例子來自官方文檔):

var xhr = new XMLHttpRequest();
xhr.open('GET', 'file.xml', true);

xhr.timeout = 2000; // time in milliseconds

xhr.onload = function () {
  // Request finished. Do processing here.
  var xmlDoc = this.responseXML; // <- Here's your XML file
};

xhr.ontimeout = function (e) {
  // XMLHttpRequest timed out. Do something here.
};

xhr.send(null);

如果你指的是本地文件,那么在xhr.open中忽略方法(1st arg),默認情況下async(3rd arg)為true,所以你真的需要指向你的文件,然后解析結果! =)

祝好運!

你可以這樣做:

<html>
<head>
<script type="text/javascript">
//If using jQuery, select the tag using something like this to manipulate  
//the look of the xml tags and stuff.
$('#xframe').attr('style', 'thisxmltag.....');
</script>
</head>
<body>
...
<frame id="xframe" src="the_xml_doc"></src>
</body>
</html>
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", file_Location, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
document.getElementById(your_div_id).value =        
xmlDoc.getElementsByTagName(The_tag_in_xml_you_want_to_display) 
[0].childNodes[0].nodeValue;

適用於IE11

<head>
    // To be hidden with a better method than using width and height
    <OBJECT id="data1" data="data.xml" width="1px" height="1px"></OBJECT>

    // to work offline
    <script src="lib/jquery-2.2.3.min.js"></script>
</head>

<body>
    <script>
    var TheDocument = document.getElementById("data1").contentDocument;
    var Customers = TheDocument.getElementsByTagName("myListofCustomers");
    var val1 = Customers[0].getElementsByTagName("Name")[0].childNodes[0].nodeValue;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM