Ответ 1
Вероятно, вы имели в виду
//*[local-name()='a'][*[local-name()='aCode']='aaa']
Вопрос довольно глупый, но я полностью застрял. Я хочу извлечь дочерние узлы узла на основе условия. XML выглядит следующим образом:
<a>
<aCode>aaa</aCode>
<aValue>bbb</aValue>
</a>
Выражение очевидно: //a[aCode='aaa']
Но я не могу понять, как я должен изменить это, если это с пространствами имен, и я должен использовать local-name()
. Я проверил следующее, и это дает ошибку разбора:
/*[local-name()='a'][[local-name()='aCode']='aaa']
Кто-нибудь знает, что мне делать?
Вероятно, вы имели в виду
//*[local-name()='a'][*[local-name()='aCode']='aaa']
Попробуйте
/a/aCode[text()='aaa']
или
//*[local-name() = 'aCode' and text() = 'aaa']
Вы использовали //
в неправильном месте.
Эта работа:
//*[local-name()='a'][*[local-name()='acode' and text()='a2']]
а также этот:
//*[local-name()='a'][aCode[text()='a2']]