24

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

4

4 回答 4

60

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

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

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

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

于 2012-06-27T10:56:17.533 回答
6

尽管这是一篇较旧的帖子,但应该注意的是,它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

于 2015-03-09T17:30:02.783 回答
0

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

于 2017-11-04T22:56:13.343 回答
-2

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

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;
于 2012-06-27T10:54:29.863 回答