如何使用“路径”查询XDocument?

时间:2012-06-27 10:52:13

标签: c# xml linq xpath linq-to-xml

我想查询给定路径的XDocument对象,(例如“/ path / to / element / I / want”)但我不知道如何继续。

4 个答案:

答案 0 :(得分:54)

您可以使用System.Xml.XPath.Extensions中的方法执行此操作。

例如,如果要选择单个元素,则可以使用XPathSelectElement()

var element = doc.XPathSelectElement("/path/to/element/I/want");

查询不必像您描述的那样是简单路径,而是使用XPath语言。

答案 1 :(得分:5)

即使这是一个较旧的帖子,但应注意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的实际结构和/或基数。

https://msdn.microsoft.com/en-us/library/bb675156.aspx

答案 2 :(得分:0)

类似的东西可能会起作用:

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;

答案 3 :(得分:0)

我需要做类似的事情。这个repo有几个单元测试演示XDocument查询与XPathEvaluate()