使用XPath查询XML字符串的最优雅方法

16
我想知道在C#中查询一个有效的XML字符串,使用XPath最优雅的方法是什么?
目前,我正在使用LINQ实现这个功能:
var el = XElement.Parse(xmlString);
var h2 = el.XPathSelectElement("//h2");

2
或者使用LinqToXML也不错... - Scott Klarenbach
1
目前,我正在使用LINQ来完成以下操作:var el = XElement.Parse(xmlString); var h2 = el.XPathSelectElement("//h2"); - Scott Klarenbach
2个回答

20

使用 Linq to XML 的简单示例:

XDocument doc = XDocument.Parse(someStringContainingXml);
var cats = from node in doc.Descendants("Animal")
           where node.Attribute("Species").Value == "Cat"
           select node.Attribute("Name").Value;

依我看,比XPath清晰得多...


4
可能比XPath更清晰,但没有回答问题。 - David Alpert
@DavidAlpert,也许是这样,但它仍然被接受了... 无论如何,这个问题完全是主观的:你如何定义“优雅”? - Thomas Levesque
1
原始问题的关键在于你如何定义“优雅...使用XPath”。 - David Alpert
优雅必然涉及简洁,必然避免复杂性。 - Joeppie
你的方法也使用了更多的处理能力,涉及更多的读取。另一种方法更加简洁,CPU 占用更少。 - Nick Turner

5

仅供参考,我不想使用Linq2XML而是XPath,并发现了以下方法:

var xPathDoc = new XPathDocument(new StringReader("your XML string goes here"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接