如何使用XPath在XML中选择兄弟节点?

时间:2011-07-07 19:59:36

标签: xml xpath

假设以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <info>
        <code>
            ABC
        </code>
        <desc>
            A
        </desc>
    </info>
    <info>
        <code>
            DEF
        </code>
        <desc>
            A
        </desc>
    </info>
    <info>
        <code>
            XYZ
        </code>
        <desc>
            B
        </desc>
    </info>
</root>

如何选择code值为'A'的所有desc元素?

我尝试了以下XPath,它什么都没给我:

/root/info[desc='A']

2 个答案:

答案 0 :(得分:5)

就像@Jim Garrison所说的那样,你需要在normalize-space()上使用<desc>,但是你可以通过添加/code(和{{{{}}来保留你拥有的xpath。 1}})

normalize-space()

答案 1 :(得分:2)

试试这个:

/root/info/code[normalize-space(../desc/text())='A']

即。告诉它你想要哪些节点(/root/info/code),按条件过滤。您需要normalize-space(),因为源文档中值的两侧都有空格。