如何使用“路径”查询XDocument?
我想查询给定路径的XDocument
对象,(例如“/ path / to / element / I / want”)但我不知道如何继续。
类似的东西可能会起作用:
var path = "/path/to/element/I/want"; var route = path.Split(new []{'/'}, StringSplitOptions.RemoveEmptyEntries); XElement result = null; foreach (var node in route) { if (result == null) { result = _xmlDocument.Element(node); } else { result = result.Element(node); } } return result;
您可以使用System.Xml.XPath.Extensions
方法执行此操作。
例如,如果要选择单个元素,则应使用XPathSelectElement()
:
var element = doc.XPathSelectElement("/path/to/element/I/want");
查询不必像您描述的那样是简单路径,而是使用XPath语言。
虽然这是一个稍微过时的post,但应该注意LINQ-to-XML
可以用作System.XML.XPath
的替代方法,以根据XDocument
的路径查找元素
例:
var results = x.Elements("path").Elements("to").Elements("element").Elements("I").Elements("want").FirstOrDefault();
注意:可能需要更改LINQ to XML命令以适应XML的实际结构和/或基数。
我需要做类似的事情。 这个repo有几个unit testing演示XDocument查询与XPathEvaluate()