Как я могу выбрать узлы-братья в XML с помощью XPath? - PullRequest
3 голосов
/ 07 июля 2011

Предполагая следующий 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, которые имеют desc значение 'A'?

Я попробовал следующий XPath, и он ничего не дал мне:

/root/info[desc='A']

Ответы [ 2 ]

5 голосов
/ 08 июля 2011

Как сказал @Jim Garrison, вам нужно использовать normalize-space() на <desc>, но вы можете в значительной степени сохранить имеющийся у вас xpath с добавлением /codenormalize-space())

/root/info[normalize-space(desc)='A']/code
2 голосов
/ 08 июля 2011

Попробуйте:

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

Т.е. скажите, какие узлы вы хотите (/root/info/code), отфильтровать по условию.Вам нужен normalize-space(), потому что с обеих сторон значений в исходном документе есть пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...