Как: отсеивать дочерние XML-узлы - PullRequest
1 голос
/ 06 апреля 2009

Учитывая кусок Xml Как показано ниже. Как бы я написал XPATH Query, чтобы получить значение потомка 'leaf2', где значение 'key' имеет определенные значения (скажем, 2)

Я работаю в C # .NET. Сейчас я просто смотрю, как получить Xpath для ключа с помощью SelectNodes, найти правильное значение и перейти обратно к leaf2.

<root>
    <child>
        <anotherChild>
           <key>1</key>
        </anotherChild>
        <leaf1>X</leaf1>
        <leaf2>Y</leaf2>
        <leaf3></leaf3>
    </child>
    <child>
        <anotherChild>
           <key>2</key>
        </anotherChild>
        <leaf1>A</leaf1>
        <leaf2>B</leaf2>
        <leaf3></leaf3>
    </child>
</root>

Ответы [ 2 ]

8 голосов
/ 06 апреля 2009

Вы хотите:

/root/child[anotherChild/key = '2']/leaf2

Это говорит: "получить элементы с именем leaf2, чей родитель child, а чей дедушка root, где child фильтруется его потомком по имени anotherChild с потомком по имени key чье значение 2. "

2 голосов
/ 06 апреля 2009

Или, может быть, немного более гибко, потому что он не предполагает, что дедушка корень

//child/anotherChild/key[text()="2"]/../../leaf2

"найдите ключ с текстом 2, родительский элемент anotherChild и grandparentchild, перейдите к бабушке и дедушке (т.е. child, и найдите leaf2"

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