XML初學進階學習筆記(4)(轉)
32、實現了NamedNodeMap介面的物件中包含了可以透過名字來訪問的一組節點的集合。
不過注意,NamedNodeMap並不是從NodeList繼承過來的,它所包含的節點集中的節點是無序的。儘管這些節點也可以透過索引來進行訪問,但這只是提供了列舉NamedNodeMap中所包含節點的一種簡單方法,並不表明在DOM規範中為NamedNodeMap中的節點規定了一種排列順序。
NamedNodeMap表示的是一組節點和其唯一名字的一一對應關係,這個介面主要用在屬性節點的表示上。與NodeList相同,在DOM中,NamedNodeMap物件也是"live"的。
33、利用DOM,程式開發人員可以動態地建立文件,遍歷文件結構,新增、修改、刪除文件內容等等。
我們將透過微軟的XML分析器msxml,對DOM介面的這些應用做的介紹。
使用不同的程式語言建立Document物件的範例。
JScript:
var doc = new ActiveXObject("Microsoft.XMLDOM")
VB Script:
Dim docSet doc = CreateObject("Microsoft.XMLDOM")
VB:
Dim doc As ObjectSet
doc = CreateObject("Microsoft.XMLDOM")
或者
Dim doc As DOMDocumentSet doc = New DOMDocument
VC:
HRESULT hr = CoCreateInstance
(CLSID_DOMDocument,NULL,CLSCTX_INPROC_SERVER,IID_IXMLDocument(LPVOID*),&m_pXMLDocument);
34、Document的載入
不同的XML分析器所提供的載入XML文件的方法也不盡相同。
在微軟的msxml中,提供了一個load方法來載入XML文件,建立DOM樹同XML文件之間的關聯。
依舊以聯絡人列表資訊的XML文件.xml為例,可透過下述方式來載入文件:
Dim myDocumentSet myDocument = CreateObject("microsoft.xmldom")
myDocument.async = FalsemyDocument.load("client.xml")
35、對DOM樹的操作::
首先,我們要獲取XML文件的根元素節點,用VBScript語言描述這個操作如下:
root = myDocument.documentElement
該語句的實際含義如下圖黃色箭頭所示。
在得到了文件的根元素節點之後,我們又將如何訪問其他元素呢?以文件中的第二個person元素為例,
對該元素節點以及其子節點的訪問可以透過下面的方式來實現:
personNode = root.childNodes.item(1)
nameNode = personNode.childNodes.item(0)
textNode = nameNode.childNodes.item(0)
theName = textNode.nodevalue
上述訪問語句執行後,theName的值是"李四"。下圖黃色箭頭給出了這一訪問過程的示意:
在上面的程式碼中,root是文件的根元素節點addressbook節點,personNode和nameNode都是元素型別的節點,textNode是TEXT型別的節點,theName是一個字串。
childNodes是NodeList型別的屬性,item是NodeList介面中Node型別的屬性,透過item可以訪問NodeList節點集合中的任意節點(這兒有一點需要注意,當我們要訪問根元素節點addressbook的第二個person子節點personNode時,
我們用的索引引數是"1",這是因為item中的索引引數是從0開始的,如果我們要訪問節點集合中的第一個節點,則應該用item(0)來表示)。
在DOM規範中,要訪問元素節點的文字內容,需要先得到元素節點的TEXT子節點,再透過TEXT節點的屬性獲取文字內容。微軟在實現DOM介面時對DOM進行了部分擴充套件,可以透過元素型別節點的text屬性直接獲得元素中的文字內容。具體實用說明可以參考微軟msdn中的幫助。
上面的例子給出瞭如何訪問DOM樹中的元素節點,
對於DOM樹中的屬性節點,訪問方法略有不同,可以透過下面的語句來實現:
attr = node.attributes.getNamedItem("sex")
attrContent = attr.nodevalue
上述訪問語句執行後,attrContent的值是"male"。下圖用黃色箭頭標出了這一訪問的過程。
在上面的程式碼中,attr是屬性型別的節點,attributes是NamedNodeMap型別的屬性,getNamedItem是NamedNodeMap介面中的方法。屬性的內容可以透過屬性節點的nodevalue來獲得。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950296/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- XML初學進階學習筆記(1)(轉)XML筆記
- XML初學進階學習筆記(5)(轉)XML筆記
- XML初學進階學習筆記(3)(轉)XML筆記
- XML初學進階學習筆記(2)(轉)XML筆記
- Go 進階學習筆記Go筆記
- Swift進階學習筆記Swift筆記
- Git進階學習筆記Git筆記
- python進階學習筆記(一)Python筆記
- Koa2進階學習筆記筆記
- 線段樹進階 學習筆記筆記
- 初學進階
- Python學習筆記(進階篇一)Python筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- 安卓初學基礎學習筆記安卓筆記
- Neo4j 學習筆記(一) 初遇篇筆記
- XML學習筆記–背誦版XML筆記
- 【Go學習筆記16】解析xmlGo筆記XML
- Redux 進階 – react 全家桶學習筆記(二)ReduxReact筆記
- Redux 進階 - react 全家桶學習筆記(二)ReduxReact筆記
- 基於docker 初學 MongoDb 學習筆記DockerMongoDB筆記
- [寒假學習筆記](二)Python初學筆記Python
- swift學習筆記《4》Swift筆記
- Rails 4 學習筆記AI筆記
- CCNA學習筆記4筆記
- vue學習筆記4Vue筆記
- Java學習筆記4Java筆記
- 人臉識別學習筆記二:進階篇筆記
- nginx進階-3(32-34天)學習筆記Nginx筆記
- 【Nginx學習筆記】-初識NginxNginx筆記
- JVM學習筆記——初識JVMJVM筆記
- Scala 學習筆記 (1):初見筆記
- Python學習筆記(一)——初學PythonPython筆記
- python學習筆記4Python筆記
- Webpack4學習筆記Web筆記
- p4 學習筆記筆記
- QT學習筆記4(動畫)QT筆記動畫
- Android學習筆記(4)Android筆記
- 【Go學習筆記4】切片Go筆記