Как получить элемент XML, где атрибутом является X или Y? - PullRequest
1 голос
/ 09 октября 2009

Рассмотрим этот xml:

<parent>
    <child name="alpha" />
</parent>

а также этот xml

<parent>
    <child name="beta" />
</parent>

В / parent / child должен быть только узел sinlge с альфа или beeta в качестве значения имени.

Для уточнения ... никогда не будет 2 дочерних узлов, каждый с именем alpha и beta

Я пытаюсь создать один запрос xpath, который будет возвращать значение name в каждом из этих двух случаев.

Я пробовал это ...

/parent/child[@name='alpha' | @name='beta']/@name

... но это не работает.

Как мне вернуть это значение ..?

Обновление: Я внес изменения в образцы, чтобы они были правильно сформированы, поскольку один ответ показал, что это не так.

Ответы [ 2 ]

7 голосов
/ 09 октября 2009

Попробуйте с:

/parent/child[(@name='alpha') or (@name='beta')]/@name

Он также должен работать без скобок.

1 голос
/ 09 октября 2009

XML не выглядит корректно, он должен быть:

<parent>
    <child name="alpha"/>
</parent>

<parent>
    <child name="beta"/>
</parent>

Если бы XML не был правильно сформирован, я бы не ожидал, что многое будет работать ..

...