XML DOM 高級


XML DOM - 高級

本教程的較早章節中,我們介紹了 XML DOM,並使用了 XML DOM 的 getElementsByTagName() 方法從 XML 文檔中取回數據。

在本章中我們將結合一些其他重要的 XML DOM 方法。

您可以在我們的 XML DOM 教學 中學習更多有關 XML DOM 的知識。


獲取元素的值

下麵的實例中使用的 XML 檔:books.xml

下麵的實例檢索第一個 <title> 元素的文本值:

實例

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;



獲取屬性的值

下麵的實例檢索第一個 <title> 元素的 "lang" 屬性的文本值:

實例

txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");



改變元素的值

下麵的實例改變第一個 <title> 元素的文本值:

實例

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Cooking";



創建新的屬性

XML DOM 的 setAttribute() 方法可用於改變現有的屬性值,或創建一個新的屬性。

下麵的實例創建了一個新的屬性(edition="first"),然後把它添加到每一個 <book> 元素中:

實例

x=xmlDoc.getElementsByTagName("book");

for(i=0;i<x.length;i++)
{
x[i].setAttribute("edition","first");
}



創建元素

XML DOM 的 createElement() 方法創建一個新的元素節點。

XML DOM 的 createTextNode() 方法創建一個新的文本節點。

XML DOM 的 appendChild() 方法向節點添加子節點(在最後一個子節點之後)。

如需創建帶有文本內容的新元素,需要同時創建元一個新的元素節點和一個新的文本節點,然後把他追加到現有的節點。

下麵的實例創建了一個新的元素(<edition>),帶有如下文本:First,然後把它添加到第一個 <book> 元素:

實例

newel=xmlDoc.createElement("edition");
newtext=xmlDoc.createTextNode("First");
newel.appendChild(newtext);

x=xmlDoc.getElementsByTagName("book");
x[0].appendChild(newel);

實例解釋

  • 創建一個 <edition> 元素
  • 創建值為 "First" 的文本節點
  • 把這個文本節點追加到新的 <edition> 元素
  • 把 <edition> 元素追加到第一個 <book> 元素

刪除元素

下麵的實例刪除第一個 <book> 元素的第一個節點:

實例

x=xmlDoc.getElementsByTagName("book")[0];
x.removeChild(x.childNodes[0]);

注釋:上面實例的結果可能會根據所用的流覽器而不同。Firefox 把新行字元當作空的文本節點,而 Internet Explorer 不是這樣。您可以在我們的 XML DOM 教學 中閱讀到更多有關這個問題以及如何避免它的知識。