Подтвердить что ты не робот

Xpath: выберите node, основанный в состоянии (с local-name())

Вопрос довольно глупый, но я полностью застрял. Я хочу извлечь дочерние узлы узла на основе условия. XML выглядит следующим образом:

<a> 
 <aCode>aaa</aCode>
 <aValue>bbb</aValue>
</a>

Выражение очевидно: //a[aCode='aaa']

Но я не могу понять, как я должен изменить это, если это с пространствами имен, и я должен использовать local-name(). Я проверил следующее, и это дает ошибку разбора:

/*[local-name()='a'][[local-name()='aCode']='aaa']

Кто-нибудь знает, что мне делать?

4b9b3361

Ответ 1

Вероятно, вы имели в виду

//*[local-name()='a'][*[local-name()='aCode']='aaa']

Ответ 2

Попробуйте

/a/aCode[text()='aaa']

или

//*[local-name() = 'aCode' and text() = 'aaa']

Вы использовали // в неправильном месте.

Ответ 3

Эта работа:

//*[local-name()='a'][*[local-name()='acode' and text()='a2']]

а также этот:

//*[local-name()='a'][aCode[text()='a2']]