简单搜索XDocument

时间:2012-12-02 23:36:04

标签: c# .net xml linq xpath

假设我想返回包含XPath的值“/ Tier1 / Tier2 / Setting [Name = aUniqueName] / theValue”

我正在使用XDocument,所以我可以使用linq,但有没有通过正确的错误检查获得此值的简短方法?我能想到的只是获取每一层,检查每一层是否为空,然后进入下一层并重复 - 这似乎比在XmlDocument中使用单行XPath要多得多。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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>