2012-07-10 179 views

回答

6

個人而言,我會使用LINQ到XML,如果你所能。你的問題是目前非常模糊,但是,例如,你可以寫:

XDocument doc = XDocument.Load("test.xml"); 
var matches = doc.Descendants("Person") 
       .Where(x => (string) x.Attribute("Name") == "Jon") 
       .Where(x => x.Elements("Child").Count() >= 2); 

雖然你可以使用XPath的,我通常不喜歡 - 它在另一個嵌入一個語言的所有正常的問題,而使用LINQ to XML,你可以在整個過程中使用C#,所以你沒有新的語法學習 - 只是LINQ to XML庫中的相關方法。

LINQ to XML也使命名空間處理變得簡單,而且您不必擔心轉義值等問題,因爲您的查詢全部是代碼而不是字符串。

通過 XmlDocument.SelectNodes的SelectSingleNode這樣
1

使用XPath

XmlDocument doc = new XmlDocument(); 
doc.Load("bookstore.xml"); 
XmlNode root = doc.DocumentElement; 

// Add the namespace. 
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("bk", "urn:newbooks-schema"); 

// Select and display the first node in which the author's 
// last name is Kingsolver. 
XmlNode node = root.SelectSingleNode(
"descendant::bk:book[bk:author/bk:last-name='Kingsolver']", nsmgr); 
Console.WriteLine(node.InnerXml);