XML DOM
DOM (Document Object Model,文檔對象模型)定義了訪問和操作文檔的標準方法。
XML DOM
XML DOM (XML Document Object Model) 定義了訪問和操作 XML 文檔的標準方法。
DOM 把 XML 文檔作為樹結(jié)構(gòu)來查看。能夠通過 DOM 樹來訪問所有元素?梢孕薷幕騽h除它們的內(nèi)容,并創(chuàng)建新的元素。元素,它們的文本,以及它們的屬性,都被認為是節(jié)點。
在下面的例子中,我們使用 DOM 引用從 <to> 元素中獲取文本:
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue
- xmlDoc -由解析器創(chuàng)建的 XML 文檔
- getElementsByTagName("to")[0] - 第一個 <to> 元素
- childNodes[0] - <to> 元素的第一個子元素(文本節(jié)點)
- nodeValue - 節(jié)點的值(文本本身)
您可以在 W3School 的 XML DOM 教程 中學(xué)習(xí)更多相關(guān)知識。
HTML DOM
HTML DOM (HTML Document Object Model) 定義了訪問和操作 HTML 文檔的標準方法。
可以通過 HTML DOM 訪問所有 HTML 元素。
在下面的例子中,我們使用 DOM 引用來改變 id="to" 的 HTML 元素的文本:
document.getElementById("to").innerHTML=
- document - HTML 文檔
- getElementById("to") - 其中的 id="to" 的 HTML 元素
- innerHTML - HTML 元素的內(nèi)部文本
您可以在 W3School 的 HTML DOM 教程 中學(xué)習(xí)更多相關(guān)知識。
解析 XML 文件 - 跨瀏覽器實例
下列代碼把一個 XML 文檔 ("note.xml") 載入 XML 解析器中:
<html> <body> <h1>jb51.net Internal Note</h1> <p><b>To:</b> <span id="to"></span><br /> <b>From:</b> <span id="from"></span><br /> <b>Message:</b> <span id="message"></span> <script type="text/javascript"> 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","note.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; document.getElementById("to").innerHTML= xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; document.getElementById("from").innerHTML= xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue; document.getElementById("message").innerHTML= xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue; </script> </body> </html>
輸出:
jb51.net Internal Note To: George From: John Message: Don't forget the meeting!
重要注釋
如需從 XML 中提取文本 "John",語法是:
getElementsByTagName("from")[0].childNodes[0].nodeValue
在上例中,只有一個 <from> 標簽,但是仍然需要規(guī)定數(shù)組的下標 [0],這是因為 getElementsByTagName() 方法會返回包含所有 <from> 節(jié)點的數(shù)組。
解析 XML 字符串 - 跨瀏覽器實例
下面的代碼加載并解析一個 XML 字符串:
<html>
<body>
<h1>jb51.net Internal Note</h1>
<p><b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span></p>
<script>
txt="<note>";
txt=txt+"<to>George</to>";
txt=txt+"<from>John</from>";
txt=txt+"<heading>Reminder</heading>";
txt=txt+"<body>Don't forget the meeting!</body>";
txt=txt+"</note>";
if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);
}
document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
輸出:
jb51.net Internal Note To: George From: John Message: Don't forget the meeting!
注釋:Internet Explorer 使用 loadXML() 方法來解析 XML 字符串,而其他瀏覽器使用 DOMParser 對象。