XML 文檔對象模型定義訪問和操作XML文檔的標準方法。
DOM 將 XML 文檔作為一個樹形結構,而樹葉被定義為節點。
XML DOM 把 XML 文檔視為一種樹結構。這種樹結構被稱為節點樹。
可通過這棵樹訪問所有節點??梢孕薷幕騽h除它們的內容,也可以創建新的元素。
XML DOM 定義了訪問和處理 XML 文檔的標準方法。
XML DOM 是 XML Document Object Model 的縮寫,即 XML 文檔對象模型。
xml每個成分都是節點、
根據 DOM,XML 文檔中的每個成分都是一個節點。
DOM 是這樣規定的:
看一個例子
<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book><book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book><book category="web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book><book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book></bookstore>
第一個 <book> 節點有四個節點:<title>, <author>, <year> 以及 <price>,其中每個節點都包含一個文本節點,"Harry Potter", "J K. Rowling", "2005" 以及 "29.99"。
注意文本存儲在文本幾點當中
在這個例子中:<year>2005</year>,元素節點 <year>,擁有一個值為 "2005" 的文本節點。
"2005"不是<year> 元素的值!
在上面的 XML 中,<title> 元素是 <book> 元素的第一個子節點,而 <price> 元素是 <book> 元素的最后一個子節點。
此外,<book> 元素是 <title>、<author>、<year> 以及 <price> 元素的父節點。
瀏覽器都內建了供讀取和操作 XML 的 XML 解析器。
解析器把 XML 讀入內存,并把它轉換為可被 JavaScript 訪問的 XML DOM 對象。
所有的解析器都含有遍歷 XML 樹、訪問、插入及刪除節點的函數。
js
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");//微軟的 XML 解析器
/*
xmlDoc= document.implementation.createDocument("","",null); //在 Firefox 及其他瀏覽器中的 XML 解析器
*/
xmlDoc.async="false";xmlDoc.load("books.xml"); //loadXML()方法用于加載字符串(文本),而load()用于加載文件。
Internet Explorer 使用loadXML()方法來解析 XML 字符串,而其他瀏覽器使用DOMParser對象。
例如:
parser=new DOMParser();xmlDoc=parser.parseFromString(txt,"text/xml");
跨瀏覽器例子
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)
出于安全方面的原因,現代的瀏覽器不允許跨域的訪問。
這意味著,網頁以及它試圖加載的 XML 文件,都必須位于相同的服務器上。
假如你打算在自己的網頁上使用上面的例子,則必須把 XML 文件放到自己的服務器上。否則,xmlDoc.load() 將產生錯誤 "Access is denied"。
XML DOM 含有遍歷 XML 樹以及訪問、插入、刪除節點的方法(函數)。
然后,在訪問并處理 XML 文檔之前,必須把它載入 XML DOM 對象。
一些典型的 DOM 屬性:
注釋:在上面的列表中,x 是一個節點對象。
注釋:在上面的列表中,x 是一個節點對象。
三個重要的 XML DOM 節點屬性是:
nodeName 屬性規定節點的名稱。
nodeValue 屬性規定節點的值。
例子
<?php$doc = new DOMDocument('1.0','utf-8');$content = file_get_contents('http://feed.cnblogs.com/blog/u/530411/rss');$doc->loadXML($content);$ts = $doc->getElementsByTagName('entry');$arr=array();///*獲取內容 原文鏈接 作者姓名 摘要 修改時間*/foreach ($ts as $value) { //鏈接 $writer= '作者'.$value->getElementsByTagName('author')->item(0)->childNodes->item(1)->nodeValue.'<br/>'; $import='文章摘要'.$value->getElementsByTagName('content')->item(0)->textContent.'<br/>'; $pushtime='發布時間'.$value->getElementsByTagName('published')->item(0)->textContent;$arr[]=array('writer'=>$writer,'import'=>$import,'pushtime'=>$pushtime);}print_r($arr);
在 XML DOM 中,節點的關系被定義為節點的屬性:
節點操作:
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
買一個電腦電源大約多少錢?買個電腦電源,價格基本在200~600左右。200元基本是劣質電源。輸出功率可以達到200瓦左右。這種動力基本支持,現在主流硬件有點勉強。不建議購買。400元左右的電源支持,目前市面主流硬件還可以。如果你買的是基本用的電腦,做文字處理,上網。你可以開始了。但是如果用電腦做大量的數據運算,玩大型游戲。那么就需要買一個600元左右的大功率電源。電腦主機換一個電源多少錢?電腦的...
如何測試micro sd卡速度?要測試sd卡的速度,可以使用MyDiskTest軟件,不僅可以檢測存儲卡的真偽,還可以檢測存儲卡的讀寫速度。MyDiskTest是一款u盤擴展檢測工具,具有擴展檢測、壞塊掃描、速度測試、老化測試、壞塊屏蔽五大功能。也是識別u盤、SD卡、CF卡等移動存儲產品擴容的工具,可以輕松檢測存儲產品是否擴容、以次充好。怎么看U盤是否是正版?使用MyDiskTwin10怎么查看U...
iPad無線連接顯示無互聯網連接怎么辦?分步閱讀一個連接wifi后發現沒有上網。讓 讓我們先確認其他人是否可以訪問互聯網。如果別人可以 如果互聯網,請重啟路由器。如果其他人可以訪問互聯網,讓 讓我們進行第二步。2打開 "設置 "要開啟飛行模式,先等幾十秒再關閉。三如果你還能 t上網,在WLAN頁面下找到連接的路由名稱,然后選擇 "忽略此網絡 "。四重新連接wifi,我們將DNS修改為8.8.8.8...