假设我想返回具有 XPath "/Tier1/Tier2/Setting[Name=aUniqueName]/theValue" 的值
我正在使用 XDocument,所以我可以使用 linq,但是有没有通过适当的错误检查来获取这个值的捷径?我能想到的就是获取每一层,检查每一层不为空,然后继续下一层并重复 - 这似乎比在 XmlDocument 中使用单行 XPath 更加努力。
您可以将 XPath 与XDocument
. 使用XPathSelectElements
方法。
这是一个 LINQ 查询,它将为您完成:
var query =
from t2 in xd.Root.Elements("Tier2")
from s in t2.Elements("Setting")
where s.Attributes("Name").Any(a => a.Value == "aUniqueName")
select s.Value;
这假设您的文档结构如下所示:
<Tier1>
<Tier2>
<Setting Name="aUniqueName">theValue</Setting>
</Tier2>
</Tier1>