XML DOM 教程
什么是 DOM?
DOM 定義了訪問和操作文檔的標準:
“W3C 文檔對象模型 (DOM) 是一個與平臺和語言無關的接口,允許程序和腳本動態訪問和更新文檔的內容、結構和樣式。”
HTML DOM 定義了訪問和操作 HTML 文檔的標準方法。它將 HTML 文檔呈現為樹結構。
XML DOM 定義了訪問和操作 XML 文檔的標準方法。它將 XML 文檔呈現為樹結構。
對于任何使用 HTML 或 XML 的人來說,理解 DOM 是必需的。
HTML DOM
所有 HTML 元素都可以通過 HTML DOM 訪問。
例子 1
此例更改 id="demo" 的 HTML 元素的值:
<h1 id="demo">這是標題</h1> <script> document.getElementById("demo").innerHTML = "Hello World!"; </script>
例子 2
此例更改 HTML 文檔中第一個 <h1> 元素的值:
<h1>這是標題</h1> <h1>這是標題</h1> <script> document.getElementsByTagName("h1")[0].innerHTML = "Hello World!"; </script>
注意:即使 HTML 文檔僅包含一個 <h1> 元素,您仍然必須指定數組索引 [0],因為 getElementsByTagName() 方法始終返回數組。
您可以在我們的 JavaScript 教程中學習更多有關 HTML DOM 的內容。
XML DOM
所有 XML 元素都可以通過 XML DOM 訪問。
XML DOM 是:
- XML 的標準對象模型
- XML 的標準編程接口
- 獨立于平臺和語言
- W3C 標準
換句話說:XML DOM 是關于如何獲取、更改、添加或刪除 XML 元素的標準。
獲取 XML 元素的值
此例檢索 XML 文檔中第一個 <title> 元素的文本值:
實例
txt = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
加載 XML 文件
下例中使用的 XML 文件是 books.xml。
此例將 "books.xml" 讀入 xmlDoc 并檢索 books.xml 中第一個 <title> 元素的文本值:
實例
<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); function myFunction(xml) { var xmlDoc = xml.responseXML; document.getElementById("demo").innerHTML = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; } </script> </body> </html>
例子解釋
xmlDoc
- 由解析器創建的 XML DOM 對象getElementsByTagName("title")[0]
- 獲取第一個 <title> 元素childNodes[0]
- <title> 元素的第一個子節點(文本節點)nodeValue
- 節點的值(文本本身)
加載 XML 字符串
此例將文本字符串加載到 XML DOM 對象中,并使用 JavaScript 從中提取信息:
實例
<html> <body> <p id="demo"></p> <script> var text, parser, xmlDoc; text = "<bookstore><book>" + "<title>雅舍談吃</title>" + "<author>梁實秋</author>" + "<year>2013</year>" + "</book></bookstore>"; parser = new DOMParser(); xmlDoc = parser.parseFromString(text,"text/xml"); document.getElementById("demo").innerHTML = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; </script> </body> </html>
編程接口
DOM 將 XML 建模為一組節點對象。可以使用 JavaScript 或其他編程語言訪問節點。在本教程中,我們使用 JavaScript。
DOM 的編程接口由一組標準屬性和方法定義。
屬性通常指的是事情是什么(比如 nodename 是 "book")。
方法通常指的是可以做什么事情(比如刪除 "book" 這個動作)。
XML DOM 屬性
這些是一些典型的 DOM 屬性:
- x.nodeName - x 的名稱
- x.nodeValue - x 的值
- x.parentNode - x 的父節點
- x.childNodes - x 的子節點
- x.attributes - x 的屬性節點
注釋:在上面的列表中,x 是一個節點對象。
XML DOM 方法
- x.getElementsByTagName(name) - 獲取擁有指定標簽名稱的所有元素
- x.appendChild(node) - 向 x 插入一個子節點
- x.removeChild(node) - 從 x 中刪除子節點
注釋:在上面的列表中,x
是一個節點對象。