Неверный префикс пространства имен для xpath - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть следующий XML-документ:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:WasteTask xmlns:ns0="http://lcc/dm/waste/v1.0">
    <ns0:Identifiers>
        <ns0:Identifier>
            <ns1:Name xmlns:ns1="http://lcc/dm/common/v1.0">id</ns1:Name>
            <ns1:Value xmlns:ns1="http://lcc/dm/common/v1.0">242498</ns1:Value>
        </ns0:Identifier>
        <ns0:Identifier>
            <ns1:Name xmlns:ns1="http://lcc/dm/common/v1.0">ServiceCode</ns1:Name>
            <ns1:Value xmlns:ns1="http://lcc/dm/common/v1.0">SR00239776</ns1:Value>
        </ns0:Identifier>
        <ns0:Identifier>
            <ns1:Name xmlns:ns1="http://lcc/dm/common/v1.0">ExternalReference</ns1:Name>
            <ns1:Value xmlns:ns1="http://lcc/dm/common/v1.0">9024896</ns1:Value>
        </ns0:Identifier>
    </ns0:Identifiers>
</ns0:WasteTask>

Я хотел бы выбрать узел Значение , у которого есть родной узел Имя , содержащий "ExternalReference", т.е. выбрать "9024896"

Я использовал xml spy для запуска xpath. Я надеялся, что "// ns1: Value" даст мне узлы Value , но выдает ошибку "Недопустимый префикс пространства имен".

xpath работает нормально, если я вручную добавляю объявление префикса ns1 в корневой узел, но у меня нет опции этого в реальном приложении.

Есть ли другой способ получить нужный мне результат с помощью xpath? Я пытался "/*/*[local-name()='Value']", но это не дало никаких результатов.

1 Ответ

0 голосов
/ 14 ноября 2018

Используя движок XPath 2.0 (который, я думаю, поддерживает XML Spy), вы можете //*:Value выбрать любой элемент с локальным именем Value.

...