文檔對象模型(DOM)是 XML 的基礎。XML 文檔有一個信息層次結構單位,被稱作節(jié)點;DOM 是描述這些節(jié)點和它們之間關系的一種方式。
DOM 文檔就是一個節(jié)點集合或者按照層次結構組織的信息塊。這個層次結構允許開發(fā)人員導航這個節(jié)點樹來查詢特定的信息。由于它基于信息層次結構,DOM 也被認為是_基于節(jié)點樹_的。
另一方面,XML DOM 還提供了一個 API,允許開發(fā)者在節(jié)點樹的任意位置添加,編輯,移動或者移除節(jié)點,以便創(chuàng)建應用程序。
下面的示例(sample.htm)將一個 XML 文檔("address.xml")解析為一個 XML DOM 對象,然后用 JavaScript 提取了一些信息:
<!DOCTYPE html>
<html>
<body>
<h1>TutorialsPoint DOM example </h1>
<div>
<b>Name:</b> <span id="name"></span><br>
<b>Company:</b> <span id="company"></span><br>
<b>Phone:</b> <span id="phone"></span>
</div>
<script>
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","/xml/address.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
document.getElementById("name").innerHTML=
xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;
document.getElementById("company").innerHTML=
xmlDoc.getElementsByTagName("company")[0].childNodes[0].nodeValue;
document.getElementById("phone").innerHTML=
xmlDoc.getElementsByTagName("phone")[0].childNodes[0].nodeValue;
</script>
</body
</html>
address.xml 的內(nèi)容如下:
<?xml version="1.0"?>
<contact-info>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</contact-info>
我們可以把這兩個文 sample.htm 和 address.xml 件保存到同一目錄 /xml 中,然后通過在瀏覽器中打開的方式執(zhí)行 sample.htm 文件。它應該生成如下所示結果:
http://wiki.jikexueyuan.com/project/xml/images/xml_dom_example.png" alt="XML DOM Example" />
這里,可以看到我們提取了每個子節(jié)點并顯示了它們的值。