我有一个XDocument对象。我想使用LINQ在任何深度查询具有特定名称的元素。使用时Descendants("element_name"),我只会得到当前级别的直接子级元素。我要寻找的是XPath中的“ // element_name”等价…我应该只使用XPath,还是可以使用LINQ方法来实现?谢谢。
XDocument
Descendants("element_name")
XPath
后代应该工作得很好。这是一个例子:
using System; using System.Xml.Linq; class Test { static void Main() { string xml = @" <root> <child id='1'/> <child id='2'> <grandchild id='3' /> <grandchild id='4' /> </child> </root>"; XDocument doc = XDocument.Parse(xml); foreach (XElement element in doc.Descendants("grandchild")) { Console.WriteLine(element); } } }
结果:
<grandchild id="3" /> <grandchild id="4" />
<grandchild id="3" />
<grandchild id="4" />