首页 > 解决方案 > 根据兄弟节点选择 XML 节点

问题描述

我正在尝试选择一个 XML 节点,其中父节点的另一个子节点包含特定值。

XML 如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<AuthorIT>
    <Objects>
        <Media>don't care</Media>
        <Style>don't care</Style>
        <Book>don't care</Book>
        <Topic>don't care</Topic>
        <Topic>
            <Object>
                <Description>Performance Evidence</Description>
            </Object>
            <Text>This is what I want to select</Text>
        </Topic>
    </Objects>
</AuthorIT>

我在 C# 中使用 XPath。我目前的查询如下所示:(但显然不起作用)

docNav = new XPathDocument(localFile);
nav = docNav.CreateNavigator();
xPath = "//Topic[Object/Description = 'Performance Evidence']/Text";
string value = nav.SelectSingleNode(xPath).Value;

如何从具有“性能证据”的对象/描述值的主题中获取文本节点的内容?

标签: c#xmlxpath

解决方案


您应该首先选择包含您的针文本的描述节点,然后返回到公共父节点并选择作为其子节点的文本节点。

//Topic/Object/Description[text()='Performance Evidence']/../../Text/text()

推荐阅读