JavaScript操作XML(二)

 

這一篇介紹瀏覽器內建的XML解析器以及JavaScript是如何加載XML的。

大多數瀏覽器都有讀取和操作 XML 的內建 XML 解析器。
解析器(XML Parser)把 XML 轉換爲 JavaScript 可訪問的對象。
解析器把 XML 載入內存,然後把它轉換爲可通過 JavaScript 訪問的 XML DOM 對象。
微軟的 XML 解析器與其他瀏覽器中的解析器之間,存在一些差異。微軟的解析器支持 XML 文件和 XML 字符串(文本)的加載,而其他瀏覽器使用單獨的解析器。不過,所有的解析器都包含遍歷 XML 樹、訪問插入及刪除節點(元素)及其屬性的函數。
Note:當我們談及 XML 解析,我們常常會使用有關 XML 元素的術語:節點。
一、IE通過微軟的 XML 解析器來加載 XML
微軟的 XML 解析器內建於 Internet Explorer 5 以及更高的版本中。
下面的 JavaScript 片段把一個 XML 文檔載入解析器中:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");

例子解釋:

  1. 上面代碼的第一個行創建一個空的微軟 XML 文檔對象。
  2. 第二行關閉異步加載,這樣確保在文檔完全加載之前解析器不會繼續腳本的執行。
  3. 第三行告知解析器加載名爲 "note.xml" 的 XML 文檔。
下面的 JavaScript 片段把字符串 txt 載入解析器:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);
註釋:loadXML() 方法用於加載字符串(文本),load() 用於加載文件。

二、Firefox 及其他瀏覽器中的 XML 解析器

下面的 JavaScript 片段把 XML 文檔 ("note.xml") 載入解析器:
var xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("note.xml");

例子解釋:

  1. 上面代碼的第一個行創建一個空的 XML 文檔對象。
  2. 第二行關閉異步加載,這樣確保在文檔完全加載之前解析器不會繼續腳本的執行。
  3. 第三行告知解析器加載名爲 "note.xml" 的 XML 文檔。
下面的 JavaScript 片段把字符串 txt 載入解析器:
var parser=new DOMParser();
var xmlDoc=parser.parseFromString(txt,"text/xml");

例子解釋:

  1. 上面代碼的第一個行創建一個空的微軟 XML 文檔對象。
  2. 第二行告知解析器載入名爲 txt 的字符串。
註釋:DOMParser對象的parseFromString () 方法用於加載字符串(文本),load() 用於加載文件。

三、跨域訪問

出於安全方面的原因,現代的瀏覽器不允許跨域的訪問。
假如你打算在自己的網頁上使用上面的例子,則必須把 XML 文件放到自己的服務器上。否則,xmlDoc.load() 將產生錯誤 "Access is denied"。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章