大多數(shù)瀏覽器都內(nèi)建了供讀取和操作 XML 的 XML 解析器。
解析器把 XML 轉(zhuǎn)換為 JavaScript 可存取的對象。
大多數(shù)瀏覽器都內(nèi)建了供讀取和操作 XML 的 XML 解析器。
解析器把 XML 轉(zhuǎn)換為 JavaScript 可存取的對象。
W3School 提供的實(shí)例獨(dú)立于瀏覽器和平臺。這些實(shí)例可在所有現(xiàn)代瀏覽器中運(yùn)行。
所有現(xiàn)代瀏覽器都內(nèi)建了用于讀取和操作 XML 的 XML 解析器。
解析器把 XML 讀入內(nèi)存,并把它轉(zhuǎn)換為可被 JavaScript 訪問的 XML DOM 對象。
微軟的 XML 解析器與其他瀏覽器中的解析器是有差異的。微軟的解析器支持對 XML 文件和 XML 字符串(文本)的加載,而其他瀏覽器使用單獨(dú)的解析器。不過,所有的解析器都含有遍歷 XML 樹、訪問、插入及刪除節(jié)點(diǎn)的函數(shù)。
在本教程中,我們將為您講解如何創(chuàng)建可在 IE 及其他瀏覽器中運(yùn)行的腳本。
微軟的 XML 解析器內(nèi)建于 Internet Explorer 5 及更高版本中。
下面的 JavaScript 片段把 XML 文檔 ("books.xml") 載入了解析器:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("books.xml");
下面的 JavaScript 片段把名為 txt 的字符串載入解析器中:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);
注釋:loadXML()方法用于加載字符串(文本),而 load()用于加載文件。
下面的 JavaScript 片段把 XML 文檔 ("books.xml") 載入了解析器:
xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; xmlDoc.load("books.xml");
下面的 JavaScript 片段把名為 txt 的字符串載入解析器中:
parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");
注釋:Internet Explorer 使用 loadXML()方法來解析 XML 字符串,而其他瀏覽器使用 DOMParser對象。
下面的例子把 XML 文檔 ("books.xml") 載入 XML 解析器:
<html> <body> <script type="text/javascript"> try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera, etc. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load("books.xml"); document.write("xmlDoc is loaded, ready for use"); } catch(e) {alert(e.message)} </script> </body> </html>
TIY
出于安全方面的原因,現(xiàn)代的瀏覽器不允許跨域的訪問。
這意味著,網(wǎng)頁以及它試圖加載的 XML 文件,都必須位于相同的服務(wù)器上。
W3School 的實(shí)例所打開的 XML 文件位于 W3School 的域上。
假如你打算在自己的網(wǎng)頁上使用上面的例子,則必須把 XML 文件放到自己的服務(wù)器上。否則,xmlDoc.load() 將產(chǎn)生錯誤 "Access is denied"。
下面的代碼加載并解析了一個 XML 字符串:
<html> <body> <script type="text/javascript"> text="<bookstore>" text=text+"<book>"; text=text+"<title>Harry Potter</title>"; text=text+"<author>J K. Rowling</author>"; text=text+"<year>2005</year>"; text=text+"</book>"; text=text+"</bookstore>"; try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } catch(e) { try //Firefox, Mozilla, Opera, etc. { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } catch(e) {alert(e.message)} } document.write("xmlDoc is loaded, ready for use"); </script> </body> </html>
TIY
注釋:Internet Explorer 使用 loadXML() 方法來解析 XML 字符串,而其他瀏覽器使用 DOMParser 對象。