如何使用Xpath在C#中读取XML

我有这个XML

      2/28/2012 5:28:05 PM S200    N82E16834230265 X54C-NS92 true newegg.com 439.99 0.00 USD       

如何使用XPath读取节点? 以上XML的XNamespace是什么?

使用XPath和XmlDocument(C#)处理XML数据

要么

最好使用 LINQ to XML,因为你正在使用.net 4.0,并且不需要学习XPath来遍历xml树。

不确定xpath表达式,但你可以像这样编码

 string fileName = "data.xml"; XPathDocument doc = new XPathDocument(fileName); XPathNavigator nav = doc.CreateNavigator(); // Compile a standard XPath expression XPathExpression expr; expr = nav.Compile("/GetSKUsPriceAndStockResponse/GetSKUsPriceAndStockResult/SKUsDetails/SKUDetails"); XPathNodeIterator iterator = nav.Select(expr); try { while (iterator.MoveNext()) { } } catch(Exception ex) { Console.WriteLine(ex.Message); } 

SKUsDetailshttp://tempuri.org/名称空间中定义。 您可以使用此代码使用XPath选择SKUsDetails

 var doc = XDocument.Load("1.xml"); var mgr = new XmlNamespaceManager(doc.CreateReader().NameTable); mgr.AddNamespace("a", "http://tempuri.org/"); var node = doc.XPathSelectElement("//a:SKUsDetails", mgr); 

要选择SKUDetails使用: //a:SKUsDetails/a:SKUDetails

正如@Kirill Polishchuk所回答 – SKUDetails is defined in http://tempuri.org/

他向您展示了如何使用XDocument

你可以像这样使用alsow XmlDocument

 var dom = new XmlDocument(); dom.Load("data.xml"); var mgr = new XmlNamespaceManager(dom.NameTable); mgr.AddNamespace("a", "http://tempuri.org/"); var res = dom.SelectNodes("//a:SKUDetails", mgr);