1. 程式人生 > >Xml中SelectSingleNode方法,xpath查詢某節點用法 Xml中SelectSingleNode方法,xpath查詢某節點用法 Xml文件新增節點和屬性

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