Xml中SelectSingleNode方法,xpath查詢某節點用法 Xml中SelectSingleNode方法,xpath查詢某節點用法 Xml文件新增節點和屬性
Xml中SelectSingleNode方法,xpath查詢某節點用法
最常見的XML資料型別有:Element, Attribute,Comment, Text. Element, 指形如<Name>Tom<Name>的節點。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
Attribute, 指在<Employee >中的粗體部分。
Comment,指形如:<!-- my comment --> 的節點。
Text,指在<Name>Tom<Name>的粗體部分。
在XML中,可以用XmlNode物件來參照各種XML資料型別。
2.1 查詢已知絕對路徑的節點(集)
objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”)
或者
objNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”)
以上兩種方法可返回一個NodeList物件,如果要返回單個節點可使用SelectSingleNode方法,該方法如果查詢到一個或多個節點,返回第一個節點;如果沒有查詢的任何節點返回 Nothing。例如:
objNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
If Not (objNode is Nothing) then
‘- Do process
End If
2.2 查詢已知相對路徑的節點(集)
可使用類似於檔案路徑的相對路徑的方式來查詢XML的資料
objNode = objDoc.SelectSingleNode(“Company/Department”)
objNodeList = objNode.SelectNodes(“../Department)
objNode = objNode.SelectNode(“Employees/Employee”)
2.3 查詢已知元素名的節點(集)
在使用不規則的層次文件時,由於不知道中間層次的元素名,可使用//符號來越過中間的節點,查詢其子,孫或多層次下的其他所有元素。例如:
objNodeList = objDoc.SelectNodes(“Company//Employee”)
2.4 查詢屬性(attribute)節點
以上的各種方法都返回元素(element)節點(集),返回屬性(attribute),只需要採用相應的方法,在屬性名前加一個@符號即可,例如:
objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”)
objNodeList = objDoc.SelectNodes(“Company//@id”)
2.5 查詢Text節點
使用text()來獲取Text節點。
objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)
2.6 查詢特定條件的節點
使用[]符號來查詢特定條件的節點。例如:
a. 返回id號為 10102的Employee節點
objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)
b. 返回Name為Zhang Qi的Name 節點
objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”)
c. 返回部門含有職員22345的部門名稱節點
objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
2.7 查詢多重模式的節點
使用 | 符號可以獲得多重模式的節點。例如:
objNodeList = objDoc.SelectNodes(“Company/Department/Department_Name | Company/Department/Manager”)
2.8 查詢任意子節點
使用*符號可以返回當前節點的所有子節點。
objNodeList = objDoc.SelectNodes(“Company/*/Manager)
或者
objNodeList = objNode.ChildNodes
3 XML資料的編輯
3.1 增加一個元素的屬性(attribute)節點
Dim objNodeAttr As XmlNode
objNodeAttr = objDoc.CreateAttribute("id", Nothing)
objNodeAttr.InnerXml = "101"
objNode.Attributes.Append(objNodeAttr)
3.2 刪除一個元素的屬性
objNode.Attributes.Remove(objNodeAttr)
3.3 增加一個子元素(Element)
Dim objNodeChild As XmlNode
objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing)
objNodeChild.InnerXml = "101"
objNode.AppendChild(objNodeChild)
3.4 刪除一個子元素
objNode.RemoveChild(objNodeChild)
3.5 替換一個子元素
objNOde.ReplaceChild(newChild,oldChild)
4 參考資料
View Code
C#用xpath查詢某節點
View Code
連結:http://blog.csdn.net/whuarui2010/article/details/8012856
http://www.cnblogs.com/timy/archive/2010/05/18/1738438.html
http://www.jb51.net/article/35568.htm
Xml文件新增節點和屬性 轉:http://www.cnblogs.com/shuang121/archive/2011/02/24/1963796.html
在實際的應用開發中需要我們對xml進行新增節點和屬性,動態的去完成,在這之前,先看看XmlNode和XmlElement之間的關係
1、XmlElement繼承XmlLinkedNode又繼承XmlNode,所以XmlElement是XmlNode的子集,那麼從繼承的關係來說,
XmlNode的屬性,XmlElement也可以使用。
2、XmlNode是.Net提供的抽象類,不能直接例項化,只能通過XmlDocument的CreateNode方法來建立,但是
XmlElement則不需要,可以直接例項化建立
3、為節點新增屬性的時候,可以直接通過XmlElement的SetAttribute來新增,也可以通過XmlNode的Attribute的add方法
來新增,同樣新增文字節點的時候也是如此
4、XmlDocument是XmlNode的擴充套件類,包含了很多XmlNode沒有的方法和屬性,我們可以通過它將xml載入到記憶體中通過
Dom來處理,也可以通過它來建立節點等
下面就來看看如何新增節點和屬性
1、首先我們需要建立一個節點元素,建立的時候我們可以通過XmlDocument的CreateElement來建立,或者是通過
XmlElement直接例項化,然後通過屬性賦值,比如Name
2、建立一個XmlNode,也就是說建立的節點需要放在什麼位置,然後建立的節點加入該XmlNode後面就可以了(可以通過
XmlNode的AppendChild方法來新增),比如加入根目錄下面:XmlDocument.DocumentElement.PrependChild
(XmlElement),如果是其他節點下,可以通過Xmldocument的SelectSingleNode("//Titles//Title")來獲得XmlNode
3、新增屬性的時候,可以直接在建立XmlElment的時候,通過XmlElement的SetAttribute來為節點建立屬性,或者是建立
一個XmlAttribute例項:XmlAttribute xmlArr=XmlDocument.CreateAttribute("屬性值"),然後通過XmlNode的
Attributes.add(XmlArribute)來新增
下面來具體看幾個例子吧
View Code
新增方法
View Code
或者是
View Code
如果不需要建立節點,直接通過SelectSingleNode(string path)來獲取XmlNode,然後再新增屬性或者文字節點等,如下:
View Code
大概過程就是
1、通過XmlDocument載入xml檔案到記憶體
2、建立XmlElement節點(可以通過SetAttribute新增屬性)
3、建立和查詢XmlNode以確保要放置的位置,將XmlElement新增到XmlNode中
4、如果沒有通過SetAttribute來新增屬性,後面可以建立XmlArribute來完成屬性的新增
5、最後重新儲存Xml:XmlDocument.save(xpath);
轉:http://www.cnblogs.com/shuang121/archive/2011/02/24/1963796.html