老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

XMLDOM是什么意思

本篇文章給大家分享的是有關(guān)XML DOM是什么意思,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

10年積累的做網(wǎng)站、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有富縣免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

XML 文檔對象模型定義訪問和操作XML文檔的標(biāo)準(zhǔn)方法。

DOM 將 XML 文檔作為一個樹形結(jié)構(gòu),而樹葉被定義為節(jié)點。

什么是 XML DOM?

XML DOM 是:

  • 用于 XML 的標(biāo)準(zhǔn)對象模型

  • 用于 XML 的標(biāo)準(zhǔn)編程接口

  • 中立于平臺和語言

  • W3C 的標(biāo)準(zhǔn)

XML DOM 定義了所有 XML 元素的對象和屬性,以及訪問它們的方法(接口)

換句話說:

XML DOM 是用于獲取、更改、添加或刪除 XML 元素的標(biāo)準(zhǔn)。

XML DOM 節(jié)點

XML 文檔中的每個成分都是一個節(jié)點。

節(jié)點

根據(jù) DOM,XML 文檔中的每個成分都是一個節(jié)點

DOM 是這樣規(guī)定的:

  • 整個文檔是一個文檔節(jié)點

  • 每個 XML 標(biāo)簽是一個元素節(jié)點

  • 包含在 XML 元素中的文本是文本節(jié)點

  • 每一個 XML 屬性是一個屬性節(jié)點

  • 注釋屬于注釋節(jié)點

DOM 實例

請看下面的 XML 文件 (books.xml):






  Harry Potter 
  J K. Rowling 
  2005 
  29.99 



  Everyday Italian 
  Giada De Laurentiis 
  2005 
  30.00 



  Learning XML 
  Erik T. Ray 
  2003 
  39.95 



  XQuery Kick Start 
  James McGovern 
  Per Bothner 
  Kurt Cagle 
  James Linn 
  Vaidyanathan Nagarajan 
  2003 
  49.99 


在上面的 XML 中,根節(jié)點是 。文檔中的所有其他節(jié)點都被包含在 中。

根節(jié)點 有四個 節(jié)點。

第一個 節(jié)點有四個節(jié)點:, <author>, <year> 以及 <price>,其中每個節(jié)點都包含一個文本節(jié)點,"Harry Potter", "J K. Rowling", "2005" 以及 "29.99"。</p><h3>文本總是存儲在文本節(jié)點中</h3><p>在 DOM 處理中一個普遍的錯誤是,認(rèn)為元素節(jié)點包含文本。</p><p>不過,元素節(jié)點的文本是存儲在文本節(jié)點中的。</p><p>在這個例子中:<em><year>2005</year></em>,元素節(jié)點 <year>,擁有一個值為 "2005" 的文本節(jié)點。</p><p>"2005" <em>不是</em> <year> 元素的值!</p><p><strong>XML DOM 節(jié)點樹</strong></p><p><strong>XML DOM 把 XML DOM 文檔視為一棵節(jié)點樹 (node-tree)。</strong></p><p><strong>樹中的所有節(jié)點彼此之間都有關(guān)系。</strong></p><h3>XML DOM 節(jié)點樹</h3><p>XML DOM 把 XML 文檔視為一種樹結(jié)構(gòu)。這種樹結(jié)構(gòu)被稱為<em>節(jié)點樹</em>。</p><p>可通過這棵樹訪問所有節(jié)點。可以修改或刪除它們的內(nèi)容,也可以創(chuàng)建新的元素。</p><p>這顆節(jié)點樹展示了節(jié)點的集合,以及它們之間的聯(lián)系。這棵樹從根節(jié)點開始,然后在樹的最低層級向文本節(jié)點長出枝條:</p><p><img alt="DOM node tree"/></p><p>上面的圖片表示 XML 文件books.xml。</p><h3>父、子和同級節(jié)點</h3><p>節(jié)點樹中的節(jié)點彼此之間都有等級關(guān)系。</p><p>父、子和同級節(jié)點用于描述這種關(guān)系。父節(jié)點擁有子節(jié)點,位于相同層級上的子節(jié)點稱為同級節(jié)點(兄弟或姐妹)。</p><ul><li><p>在節(jié)點樹中,頂端的節(jié)點成為根節(jié)點</p></li><li><p>根節(jié)點之外的每個節(jié)點都有一個父節(jié)點</p></li><li><p>節(jié)點可以有任何數(shù)量的子節(jié)點</p></li><li><p>葉子是沒有子節(jié)點的節(jié)點</p></li><li><p>同級節(jié)點是擁有相同父節(jié)點的節(jié)點</p></li></ul><p>下面的圖片展示出節(jié)點樹的一個部分,以及節(jié)點間的關(guān)系:</p><p><img alt="node tree"/></p><p>因為 XML 數(shù)據(jù)是按照樹的形式進(jìn)行構(gòu)造的,所以可以在不了解樹的確切結(jié)構(gòu)且不了解其中包含的數(shù)據(jù)類型的情況下,對其進(jìn)行遍歷。</p><p>您將在本教程稍后的章節(jié)學(xué)習(xí)更多有關(guān)遍歷節(jié)點樹的知識。</p><p>注釋:父節(jié)點:Parent Node,子節(jié)點:Children Node,同級節(jié)點:Sibling Node。</p><h3>第一個子節(jié)點 - 最后一個子節(jié)點</h3><p>請看下面的 XML 片段:</p><pre><bookstore> <book category="CHILDREN"> <title lang="en">Harry Potter J K. Rowling 2005 29.99

在上面的 XML 中, 元素是 <book> 元素的第一個子節(jié)點,而 <price> 元素是 <book> 元素的最后一個子節(jié)點。</p><p>此外,<book> 元素是 <title>、<author>、<year> 以及 <price> 元素的父節(jié)點。</p><p><strong>解析 XML DOM</strong></p><h3>解析 XML</h3><p>所有現(xiàn)代瀏覽器都內(nèi)建了用于讀取和操作 XML 的 XML 解析器。</p><p>解析器把 XML 讀入內(nèi)存,并把它轉(zhuǎn)換為可被 JavaScript 訪問的 XML DOM 對象。</p><p>微軟的 XML 解析器與其他瀏覽器中的解析器是有差異的。微軟的解析器支持對 XML 文件和 XML 字符串(文本)的加載,而其他瀏覽器使用單獨的解析器。不過,所有的解析器都含有遍歷 XML 樹、訪問、插入及刪除節(jié)點的函數(shù)。</p><p>在本教程中,我們將為您講解如何創(chuàng)建可在 IE 及其他瀏覽器中運行的腳本。</p><h3>通過微軟的 XML 解析器加載 XML</h3><p>微軟的 XML 解析器內(nèi)建于 Internet Explorer 5 及更高版本中。</p><p>下面的 JavaScript 片段把 XML 文檔 ("books.xml") 載入了解析器:</p><pre>xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("books.xml");</pre><h4>代碼解釋:</h4><ul><li><p>第一行創(chuàng)建空的微軟 XML 文檔對象</p></li><li><p>第二行關(guān)閉異步加載,這樣可確保在文檔完整加載之前,解析器不會繼續(xù)執(zhí)行腳本</p></li><li><p>第三行告知解析器加載名為 "books.xml" 的文檔</p></li></ul><p>下面的 JavaScript 片段把名為 txt 的字符串載入解析器中:</p><pre>xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);</pre><p>注釋:<em>loadXML()</em> 方法用于加載字符串(文本),而<em>load()</em> 用于加載文件。</p><h3>在 Firefox 及其他瀏覽器中的 XML 解析器</h3><p>下面的 JavaScript 片段把 XML 文檔 ("books.xml") 載入了解析器:</p><pre>xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; xmlDoc.load("books.xml");</pre><h4>代碼解釋:</h4><ul><li><p>第一行創(chuàng)建空的 XML 文檔對象</p></li><li><p>第二行關(guān)閉異步加載,這樣可確保在文檔完整加載之前,解析器不會繼續(xù)執(zhí)行腳本</p></li><li><p>第三行告知解析器加載名為 "books.xml" 的文檔</p></li></ul><p>下面的 JavaScript 片段把名為 txt 的字符串載入解析器中:</p><pre>parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");</pre><h4>代碼解釋:</h4><ul><li><p>第一行創(chuàng)建一個空的 XML 文檔對象</p></li><li><p>第二行告知解析器加載名為 txt 的字符串</p></li></ul><p>注釋:Internet Explorer 使用<em>loadXML()</em> 方法來解析 XML 字符串,而其他瀏覽器使用 <em>DOMParser</em> 對象。</p><h3>解析 XML 文件 - 一個跨瀏覽器的實例</h3><p>下面的例子把 XML 文檔 ("books.xml") 載入 XML 解析器:</p><pre><html> <body> <script type="text/javascript"> try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera, etc. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load("books.xml"); document.write("xmlDoc is loaded, ready for use"); } catch(e) {alert(e.message)} </script> </body> </html></pre><h3>Error: Access Across Domains</h3><p>出于安全方面的原因,現(xiàn)代的瀏覽器不允許跨域的訪問。</p><p>這意味著,網(wǎng)頁以及它試圖加載的 XML 文件,都必須位于相同的<a title="服務(wù)器" target="_blank" href="http://www.cdfuwuqi.com/">服務(wù)器</a>上。</p><p>W3School 的實例所打開的 XML 文件位于 W3School 的域上。</p><p>假如你打算在自己的網(wǎng)頁上使用上面的例子,則必須把 XML 文件放到自己的服務(wù)器上。否則,xmlDoc.load() 將產(chǎn)生錯誤 "Access is denied"。</p><h3>解析 XML 字符串 - 一個跨瀏覽器的實例</h3><p>下面的代碼加載并解析了一個 XML 字符串:</p><pre><html> <body> <script type="text/javascript"> text="<bookstore>" text=text+"<book>"; text=text+"<title>Harry Potter"; text=text+"J K. Rowling"; text=text+"2005"; text=text+""; text=text+""; try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } catch(e) { try //Firefox, Mozilla, Opera, etc. { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } catch(e) {alert(e.message)} } document.write("xmlDoc is loaded, ready for use");

XML DOM 加載函數(shù)

加載函數(shù)

XML DOM 含有遍歷 XML 樹以及訪問、插入、刪除節(jié)點的方法(函數(shù))。

然后,在訪問并處理 XML 文檔之前,必須把它載入 XML DOM 對象。

上一節(jié)演示了如何加載 XML 文檔。為了避免因加載文檔而重復(fù)編寫代碼,可以把代碼存儲在一個單獨的 JavaScript 文件中:

function loadXMLDoc(dname) 
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load(dname);
  return(xmlDoc);
  }
catch(e) {alert(e.message)}
return(null);
}

上面的函數(shù)存儲在名為 "loadxmldoc.js" 的文件中。

下面的例子在其 部分有一個指向 "loadxmldoc.js" 的鏈接,并使用 loadXMLDoc() 函數(shù)加載 XML 文檔 ("books.xml"):







XML DOM - 屬性和方法

編程接口

DOM 把 XML 模擬為一系列節(jié)點接口。可通過 JavaScript 或其他編程語言來訪問節(jié)點。在本教程中,我們使用 JavaScript。

對 DOM 的編程接口是通過一套標(biāo)準(zhǔn)的屬性和方法來定義的。

屬性經(jīng)常按照“某事物是什么”的方式來使用(例如節(jié)點名是 "book")。

方法經(jīng)常按照“對某事物做什么”的方式來使用(例如刪除 "book" 節(jié)點)。

XML DOM 屬性

一些典型的 DOM 屬性:

  • x.nodeName - x 的名稱

  • x.nodeValue - x 的值

  • x.parentNode - x 的父節(jié)點

  • x.childNodes - x 的子節(jié)點

  • x.attributes - x 的屬性節(jié)點

注釋:在上面的列表中,x 是一個節(jié)點對象。

XML DOM 方法

  • x.getElementsByTagName(name) - 獲取帶有指定標(biāo)簽名稱的所有元素

  • x.appendChild(node) - 向 x 插入子節(jié)點

  • x.removeChild(node) - 從 x 刪除子節(jié)點

注釋:在上面的列表中,x 是一個節(jié)點對象。

實例

從 books.xml 中的 元素獲取文本的 JavaScript 代碼:</p><pre>txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue</pre><p>在此語句執(zhí)行后,txt 保存的值是 "Everyday Italian"。</p><h4>解釋:</h4><ul><li><p><em>xmlDoc</em> - 由解析器創(chuàng)建的 XML DOM</p></li><li><p><em>getElementsByTagName("title")[0]</em> - 第一個 <title> 元素</p></li><li><p><em>childNodes[0]</em> - <title> 元素的第一個子節(jié)點 (文本節(jié)點)</p></li><li><p><em>nodeValue</em> - 節(jié)點的值 (文本自身)</p></li></ul><p>在上面的例子中,getElementsByTagName 是方法,而 childNodes 和 nodeValue 是屬性。</p><h3>解析 XML 文件 - 跨瀏覽器實例</h3><p>下面的代碼片段使用 loadXMLDoc 函數(shù)把books.xml 載入 XML 解析器中,并顯示第一個 book 的數(shù)據(jù):</p><pre>xmlDoc=loadXMLDoc("books.xml"); document.write(xmlDoc.getElementsByTagName("title") [0].childNodes[0].nodeValue); document.write("<br />"); document.write(xmlDoc.getElementsByTagName("author") [0].childNodes[0].nodeValue); document.write("<br />"); document.write(xmlDoc.getElementsByTagName("year") [0].childNodes[0].nodeValue);</pre><p>輸出:</p><pre>Harry Potter J K. Rowling 2005</pre><p>在上面的例子中,我們?yōu)槊總€文本節(jié)點使用 childNodes[0],即使每個元素只有一個文本節(jié)點。這是由于 getElementsByTagName() 方法總是會返回數(shù)組。</p><h3>解析 XML 字符串 - 跨瀏覽器實例</h3><p>下面的代碼加載并解析一個 XML 字符串:</p><p>下面的代碼片段使用 loadXMLString 函數(shù)把books.xml 載入 XML 解析器,并顯示第一個 book 的數(shù)據(jù):</p><pre>text="<bookstore>" text=text+"<book>"; text=text+"<title>Harry Potter"; text=text+"J K. Rowling"; text=text+"2005"; text=text+""; text=text+""; xmlDoc=loadXMLString(text); document.write(xmlDoc.getElementsByTagName("title") [0].childNodes[0].nodeValue); document.write("
"); document.write(xmlDoc.getElementsByTagName("author") [0].childNodes[0].nodeValue); document.write("
"); document.write(xmlDoc.getElementsByTagName("year") [0].childNodes[0].nodeValue);

輸出:

Harry Potter
J K. Rowling
2005

訪問節(jié)點

您可以通過三種方法來訪問節(jié)點:

  1. 通過使用 getElementsByTagName() 方法

  2. 通過循環(huán)(遍歷)節(jié)點樹

  3. 通過利用節(jié)點的關(guān)系在節(jié)點樹中導(dǎo)航

getElementsByTagName() 方法

getElementsByTagName() 返回?fù)碛兄付?biāo)簽名的所有元素。

語法

node.getElementsByTagName("tagname");

實例

下面的例子返回 x 元素下的所有 元素:</p><pre>x.getElementsByTagName("title");</pre><p>請注意,上面的例子僅返回 x 節(jié)點下的 <title> 元素。要返回 XML 文檔中的所有 <title> 元素,請使用:</p><pre>xmlDoc.getElementsByTagName("title");</pre><p>在這里,xmlDoc 就是文檔本身(文檔節(jié)點)。</p><h3>DOM Node List</h3><p>getElementsByTagName() 方法返回節(jié)點列表 (node list)。節(jié)點列表是節(jié)點的數(shù)組。</p><p>下面的代碼通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,然后在變量 x 中存儲 <title> 節(jié)點的一個列表:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title");</pre><p>可通過下標(biāo)訪問 x 中的 <title> 元素。要訪問第三個 <title>,您可以編寫:</p><pre>y=x[2];</pre><p>注釋:下標(biāo)以 0 起始。</p><p>在本教程中稍后的章節(jié),您將學(xué)到更多有關(guān) Node List 的知識。</p><h3>DOM Node List Length</h3><p>length 屬性定義節(jié)點列表的長度(即節(jié)點的數(shù)目)。</p><p>您能夠通過使用 length 屬性來循環(huán)一個節(jié)點列表:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); for (i=0;i<x.length;i++) { document.write(x[i].childNodes[0].nodeValue); document.write("<br />"); }</pre><h4>例子解釋:</h4><ol><li><p>使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc</p></li><li><p>取得所有 <title> 元素節(jié)點</p></li><li><p>輸出每個 <title> 元素的文本節(jié)點的值</p></li></ol><h3>Node Type</h3><p>XML 文檔的 <em>documentElement</em> 屬性是根節(jié)點。</p><p>節(jié)點的 <em>nodeName</em> 屬性是節(jié)點的名稱。</p><p>節(jié)點的 <em>nodeType</em> 屬性是節(jié)點的類型。</p><p>您將在本教程的下一節(jié)中學(xué)習(xí)更多有關(guān)節(jié)點屬性的知識。</p><h3>遍歷節(jié)點</h3><p>下面的代碼循環(huán)根節(jié)點的子節(jié)點,同時也是元素節(jié)點:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {//Process only element nodes (type 1) document.write(x[i].nodeName); document.write("<br />"); } }</pre><h4>例子解釋:</h4><ol><li><p>通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中</p></li><li><p>獲得根元素的子節(jié)點</p></li><li><p>檢查每個子節(jié)點的節(jié)點類型。如果節(jié)點類型是 "1",則是元素節(jié)點</p></li><li><p>如果是元素節(jié)點,則輸出節(jié)點的名稱</p></li></ol><h3>利用節(jié)點的關(guān)系進(jìn)行導(dǎo)航</h3><p>下面的代碼通過利用節(jié)點的關(guān)系在節(jié)點樹中進(jìn)行導(dǎo)航:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].childNodes; y=xmlDoc.getElementsByTagName("book")[0].firstChild; for (i=0;i<x.length;i++) { if (y.nodeType==1) {//Process only element nodes (type 1) document.write(y.nodeName + "<br />"); } y=y.nextSibling; }</pre><ol><li><p>通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中</p></li><li><p>獲得第一個 book 元素的子節(jié)點</p></li><li><p>把 "y" 變量設(shè)置為第一個 book 元素的第一個子節(jié)點</p></li><li><p>檢查每個子節(jié)點的節(jié)點類型,如果節(jié)點類型是 "1",則是元素節(jié)點</p></li><li><p>如果是元素節(jié)點,則輸出該節(jié)點的名稱</p></li><li><p>把 "y" 變量設(shè)置為下一個同級節(jié)點,并再次運行循環(huán)</p></li></ol><p></p><h3>節(jié)點的屬性</h3><p>在 XML 文檔對象模型 (DOM) 中,每個節(jié)點都是一個<em>對象</em>。</p><p>對象擁有方法(功能)和屬性(關(guān)于對象的信息),并可通過 JavaScript 進(jìn)行訪問和操作。</p><p>三個重要的 XML DOM 節(jié)點屬性是:</p><ul><li><p>nodeName</p></li><li><p>nodeValue</p></li><li><p>nodeType</p></li></ul><h3>nodeName 屬性</h3><p>nodeName 屬性規(guī)定節(jié)點的名稱。</p><ul><li><p>nodeName 是只讀的</p></li><li><p>元素節(jié)點的 nodeName 與標(biāo)簽名相同</p></li><li><p>屬性節(jié)點的 nodeName 是屬性的名稱</p></li><li><p>文本節(jié)點的 nodeName 永遠(yuǎn)是 #text</p></li><li><p>文檔節(jié)點的 nodeName 永遠(yuǎn)是 #document</p></li></ul><h3>nodeValue 屬性</h3><p>nodeValue 屬性規(guī)定節(jié)點的值。</p><ul><li><p>元素節(jié)點的 nodeValue 是 undefined</p></li><li><p>文本節(jié)點的 nodeValue 是文本自身</p></li><li><p>屬性節(jié)點的 nodeValue 是屬性的值</p></li></ul><h3>例子 1:獲取元素的值</h3><p>下面的代碼檢索第一個 <title> 元素的文本節(jié)點的值:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; txt=x.nodeValue;</pre><p>結(jié)果:txt = "Everyday Italian"</p><h4>代碼解釋:</h4><ul><li><p>通過使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中</p></li><li><p>獲取第一個 <title> 元素節(jié)點的文本節(jié)點</p></li><li><p>把 txt 變量設(shè)置為文本節(jié)點的值</p></li></ul><h3>例子 2:更改元素的值</h3><p>下面的代碼更改第一個 <title> 元素的文本節(jié)點的值:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.nodeValue="Easy Cooking";</pre><h4>代碼解釋:</h4><ul><li><p>通過使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中</p></li><li><p>獲取第一個 <title> 元素節(jié)點的文本節(jié)點</p></li><li><p>把文本節(jié)點的值更改為 "Easy Cooking"</p></li></ul><h3>nodeType 屬性</h3><p>nodeType 屬性規(guī)定節(jié)點的類型。</p><p>nodeType 是只讀的。</p><h4>最重要的節(jié)點類型是:</h4><table class="dataintable"><tbody><trl><th>元素類型</th><th>節(jié)點類型</th></tr><tr><td>元素</td><td>1</td></tr><tr><td>屬性</td><td>2</td></tr><tr><td>文本</td><td>3</td></tr><tr><td>注釋</td><td>8</td></tr><tr><td>文檔</td><td>9</td></tr></tbody></table><p></p><h3>DOM Node List</h3><p>當(dāng)使用諸如 childNodes 或 getElementsByTagName() 屬性或方法時,會返回 NodeList 對象。</p><p>NodeList 對象表示節(jié)點的列表,以 XML 中的相同順序。</p><p>使用從 0 開始的下標(biāo)來訪問節(jié)點列表中的節(jié)點。</p><p>下面的圖像表示 "books.xml" 中 <title> 元素的節(jié)點列表:</p><p><img alt="DOM node list"/></p><p>下面的代碼片段通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,并返回 "books.xml" 中 title 元素的一個節(jié)點列表:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title");</pre><p>以上語句執(zhí)行之后,x 成為一個 NodeList 對象。</p><p>下面的代碼片段從節(jié)點列表 x 中的第一個 <title> 元素中返回文本:</p><pre>txt=x[0].childNodes[0].nodeValue;</pre><p>在以上語句執(zhí)行之后,txt = "Everyday Italian"。</p><h3>Node List Length</h3><p>NodeList 對象會保持自身的更新。如果刪除或添加了元素,列表會自動更新。</p><p>節(jié)點列表的 length 屬性是列表中節(jié)點的數(shù)量。</p><p>下面的代碼片段通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc,并返回 "books.xml" 中 <title> 元素的數(shù)量:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName('title').length;</pre><p>在上面的語句執(zhí)行之后,x = 4。</p><p>節(jié)點列表的長度可用于循環(huán)列表中所有的元素。</p><p>下面的代碼片段使用 length 屬性來遍歷 <title> 元素的列表:</p><pre>xmlDoc=loadXMLDoc("books.xml"); //the x variable will hold a node list x=xmlDoc.getElementsByTagName('title'); for (i=0;i<x.length;i++) { document.write(x[i].childNodes[0].nodeValue); document.write("<br />"); }</pre><p>輸出:</p><pre>Harry Potter Everyday Italian XQuery Kick Start Learning XML</pre><h4>例子解釋:</h4><ul><li><p>通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc</p></li><li><p>設(shè)置保存所有 title 元素的節(jié)點列表的 x 變量</p></li><li><p>從所有 <title> 元素的文本節(jié)點輸出值</p></li></ul><h3>DOM Attribute List (Named Node Map)</h3><p>元素節(jié)點的 attributes 屬性返回屬性節(jié)點的列表。</p><p>這被稱為 Named Node Map,除了方法和屬性上的一些差別以外,它與節(jié)點列表相似。</p><p>屬性列表會保持自身的更新。如果刪除或添加屬性,這個列表會自動更新。</p><p>下面的代碼片段通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,并從 "books.xml" 中的第一個 <book> 元素返回屬性節(jié)點的一個列表:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName('book')[0].attributes;</pre><p>以上代碼執(zhí)行之后,x.length 等于屬性的數(shù)量,可使用 x.getNamedItem() 返回屬性節(jié)點。</p><p>下面的代碼片段一個 book 的 "category" 屬性的值,以及其屬性的數(shù)量:</p><pre>xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].attributes; document.write(x.getNamedItem("category").nodeValue); document.write("<br />" + x.length);</pre><p>輸出:</p><pre>children 1</pre><h4>例子解釋:</h4><ul><li><p>通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中</p></li><li><p>把 x 變量設(shè)置為第一個 <book> 元素的所有屬性的一個列表</p></li><li><p>從 "category" 屬性輸出其值</p></li><li><p>輸出屬性列表的長度</p></li></ul><p></p><h2>XML DOM 遍歷節(jié)點樹</h2><p></p><p><strong>遍歷 (Traverse) 意味著在節(jié)點樹中進(jìn)行循環(huán)或移動。</strong></p><h3>實例</h3><p>下面的例子使用 XML 文件books.xml。</p><p>函數(shù)loadXMLString(),位于外部 JavaScript 中,用于加載 XML 文件。</p><ul><li><p>遍歷一棵節(jié)點樹</p></li><li><p>循環(huán) <book> 元素的所有子節(jié)點。</p></li></ul><h3>遍歷節(jié)點樹</h3><p>您經(jīng)常需要循環(huán) XML 文檔,比如:當(dāng)你需要提取每個元素的值時。</p><p>這個過程叫作“遍歷節(jié)點樹”。</p><p>下面的例子循環(huán) <book> 的所有子節(jié)點,并顯示它們的名稱和值:</p><pre><html> <head> <script type="text/javascript" src="loadxmlstring.js"></script> </head> <body> <script type="text/javascript"> text="<book>"; text=text+"<title>Harry Potter"; text=text+"J K. Rowling"; text=text+"2005"; text=text+""; xmlDoc=loadXMLString(text); // documentElement always represents the root node x=xmlDoc.documentElement.childNodes; for (i=0;i"); }

輸出:

title: Harry Potter
author: J K. Rowling
year: 2005

例子解釋:

  • loadXMLString() 把 XML 字符串載入 xmlDoc 中

  • 獲取根元素的子節(jié)點

  • 輸出每個子節(jié)點的名稱,以及文本節(jié)點的節(jié)點值

定位 DOM 節(jié)點

通過節(jié)點間的關(guān)系訪問節(jié)點樹中的節(jié)點,通常稱為定位節(jié)點 ("navigating nodes")。

在 XML DOM 中,節(jié)點的關(guān)系被定義為節(jié)點的屬性:

  • parentNode

  • childNodes

  • firstChild

  • lastChild

  • nextSibling

  • previousSibling

下面的圖像展示了books.xml 中節(jié)點樹的一個部分,并說明了節(jié)點之間的關(guān)系:

DOM node tree

DOM - 父節(jié)點

所有的節(jié)點都僅有一個父節(jié)點。下面的代碼定位到 的父節(jié)點:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);

例子解釋:

  • 通過使用loadXMLDoc() 把 "books.xml" 載入到 xmlDoc 中

  • 獲取第一個 元素

  • 輸出 "x" 的父節(jié)點的節(jié)點名

TIY

避免空的文本節(jié)點

Firefox,以及其他一些瀏覽器,把空的空白或換行當(dāng)作文本節(jié)點,而 IE 不會這么做。

這會在使用下列屬性使產(chǎn)生一個問題:firstChild、lastChild、nextSibling、previousSibling。

為了避免定位到空的文本節(jié)點(元素節(jié)點之間的空格和換行符號),我們使用一個函數(shù)來檢查節(jié)點的類型:

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}

有了上面的函數(shù),我們就可以使用 get_nextSibling(node) 來代替 node.nextSibling 屬性。

代碼解釋:

元素節(jié)點的類型是 1。如果同級節(jié)點不是元素節(jié)點,就移動到下一個節(jié)點,直到找到元素節(jié)點為止。通過這個辦法,在 IE 和 Firefox 中,都可以得到相同的結(jié)果。

獲取第一個元素

下面的代碼顯示第一個 的第一個元素節(jié)點:









輸出:

title

例子解釋:

  • 通過使用loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中

  • 在第一個 上使用 get_firstChild 函數(shù),來獲取元素節(jié)點中的第一個子節(jié)點

  • 輸出第一個子節(jié)點(屬于元素節(jié)點)的節(jié)點名

以上就是XML DOM是什么意思,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前標(biāo)題:XMLDOM是什么意思
文章鏈接:http://www.xueling.net.cn/article/jsogei.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 极品尤物一区二区三区 | 秋霞一级鲁丝片免费观看 | 国产口爆吞精在线视频观看 | 国产精品免费高清在线观看 | 一本一道久久a久久精品 | 六月婷操 | 亚洲色成人中文字幕网站 | 国产ZZJJZZJJ视频全免费 | 国产高清视频在线观看一区二区 | 国产精品人妻一区二区三区四区 | 日韩字幕在线 | 国产精品久久久久久久久久嫩草 | 免费涩涩 | 成年美女黄的视频网站 | 国产精品久久影视 | 一区三区在线观看 | 全免费A级毛片免费看无码 四虎国产精品成人免费久久 | 久久人人爽人人爽人人片AV麻烦 | 国产萌白酱喷水视频在线观看 | 视频一区二区中文字幕日韩 | 国产精品原创巨作av | 天天躁日日躁狠狠躁2018 | 办公室少妇激情呻吟a片在线观看 | 看大黄公狍和女人做爰 | 麻豆久久久久 | 大象视频成人看免费网站 | 亚洲人精选亚洲人成在线 | 小伙强行挺进护士体内 | 日本日韩中文字幕 | 久久中文精品视频 | 精品国产91亚洲一区二区三区www | 国产视频网站在线 | 亚洲一久久久久久久久 | 日本一区二区三区免费A片 1024手机在线观看你懂的 | A级毛片无码久久精品免费 激情欧美成人久久综合 | 美女极度色诱图片www | 精品麻豆剧传媒av国产九九九 | 久久久久亚洲av毛片大全 | 国产乱子影视频上线免费观看 | 久久久久99精品成人片牛牛影视 | 中文字幕日韩av在线 |