今天在網上看到一個關於selectNodes與selectSingleNode的用法的區別。
由於之前沒有特別在意,因而今日看見是很是驚異。特復制過來,供大家一起學習!
其中文中提到了最重要的區別是在運用操作後的變化。
selectnodes: selectNodes和ChildNodes獲取XML內容數組的差異性
我們在使用XML進行查詢或者變更數據的時候,需要注意兩個很相近但結果相差很大的用法,如下:
1: XmlDocument doc = new XmlDocument();
2: Doc.loadXml(strXml);
3: XmlNodeList xnlListOne = doc.selectNodes(“//Nodes/Node”);
4: XmlNodeList xnlListTwo = doc.selectSingleNode(“//Nodes”).ChildNodes;
乍一看,xnlListOne和xnlListTwo都是獲取當前Xml文檔中的Node數組,如果我們沒有變動該Xml文檔,則兩者沒有任何不同,但是一旦我們在後面的操作中添加或者刪除了其中的Node節點的話,情況就不一樣了,變動後,當我們使用我們前面獲取的xnlListOne和xnlListTwo進行遍歷操作的時候,我們會發現,前者不會有任何變動,而後者會根據文檔內容的變動而實時更新!
這個特性在前台頁面的腳本中也會有所出現,例如div嵌套時,獲取其嵌套子div時候,使用ChildNodes來獲取也會實時更新,這個特性是因為他們都是通過指針指向操作其內容的,其內部應該伴隨這一次遍歷操作,而獲取的結果數組是一次計算後的結果,已經通過開辟新內存的方式進行存儲,故而不會受到影響,當然,我們也可以通過這個特性來做一些特別的功能。