javascript 操作XML3

來源:互聯網
上載者:User
 上一篇介紹了XML如何載入到JavaScript解析器。
這一篇介紹載入到解析器後,JavaScript是如何訪問節點的。

在詳細介紹如何使用上面的方法前,我們來瞭解一下節點的主要屬性。
documentElement 屬性:XML 文檔的根節點。
nodeName 屬性:節點的名稱(唯讀)。
nodeValue 屬性:節點的值。
nodeType 屬性:節點的類型。
childNodes 屬性:返回子節點集合。
parentNode 屬性:返回父節點。
firstChild 屬性:返回第一個子節點。
lastChild 屬性:返回最後一個子節點。
nextSibling 屬性:返回下一個子節點。
previousSibling 屬性:返回上一個子節點。

nodeName 屬性

nodeName 屬性規定節點的名稱。

  • nodeName 是唯讀
  • 元素節點的 nodeName 與標籤名相同
  • 屬性節點的 nodeName 是屬性的名稱
  • 文本節點的 nodeName 永遠是 #text
  • 文檔節點的 nodeName 永遠是 #document
nodeValue 屬性

nodeValue 屬性規定節點的值。

  • 元素節點的 nodeValue 是 undefined
  • 文本節點的 nodeValue 是文本自身
  • 屬性節點的 nodeValue 是屬性的值
nodeType 屬性

nodeType 屬性規定節點的類型。
nodeType 是唯讀。
最重要的節點類型是:

元素類型 節點類型
元素 1
屬性 2
文本 3
注釋 8
文檔 9

您可以通過四種方法來訪問節點:
1、通過getElementsById() 方法。
    用法: var xNode = xmlDoc.getElementsById('ID') ;
    解釋:這個方法我想大家已經很熟悉了。就是如果XML裡有個id='ID'的Node,那個就返回這個Node節點,否則返回null。
    在得到這個Node後,就可以用上面的屬性進行訪問了。

    ps: xmlDoc的定義可以在上一篇文章中找到。

2、通過getElementsByTagName() 方法。
     用法:var arrNodes=xmlDoc.getElementsByTagName('TagName') ;
     解釋:這個方法是根據tagname返回一個數組。此方法最常用。
     例子1:
     //xml 內容: http://blog.csdn.net/avon520/archive/2008/11/20/3340927.aspx

     var arrNodes=xmlDoc.getElementsByTagName("title");
     for (i=0;i<arrNodes.length;i++)
     { 
       alert(arrNodes[i].childNodes[0].nodeValue);
     }
例子2:
    // 擷取第一個 <title> 元素節點的文本節點。注意,元素內的文本是元素的子節點,叫文本節點。
     var xNode=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
     alert(xNode.nodeValue); // 文本節點的值 。output "Everyday Italian"
 
3、通過迴圈(遍曆)節點樹。
    這個方法沒什麼好說的,就是用for迴圈結合childNodes遍曆所以的節點。
例子:
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)//只遍曆了一層

  document.write(x[i].nodeName);
  document.write("<br />");
}

4、通過節點的關係在節點樹中導航。
    這個方法是根據當前節點得到parentNode 、firstChild、lastChild、nextSibling 、previousSibling 來移動。
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
  document.write(y.nodeName + "<br />");
   y=y.nextSibling;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.