1

假设我想返回具有 XPath "/Tier1/Tier2/Setting[Name=aUniqueName]/theValue" 的值

我正在使用 XDocument,所以我可以使用 linq,但是有没有通过适当的错误检查来获取这个值的捷径?我能想到的就是获取每一层,检查每一层不为空,然后继续下一层并重复 - 这似乎比在 XmlDocument 中使用单行 XPath 更加努力。

4

2 回答 2

4

您可以将 XPath 与XDocument. 使用XPathSelectElements方法。

于 2012-12-02T23:40:21.980 回答
1

这是一个 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>
于 2012-12-03T00:03:23.807 回答