xpath的无效名称空间前缀

时间:2018-11-14 09:29:27

标签: xml xpath xml-namespaces

我有以下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>

我想选择一个 Value 节点,该节点具有一个包含“ ExternalReference”的同级 Name 节点,即选择“ 9024896”

我一直在使用xml spy运行xpath。我希望“ // ns1:Value”能使我得到 Value 节点,但它会给出错误“无效的名称空间前缀”。

如果我将ns1前缀声明手动添加到根节点,则xpath可以正常工作,但在实际应用程序中我没有此选择。

是否还有另一种方法可以通过xpath获得所需的结果?我尝试过"/*/*[local-name()='Value']",但是没有返回结果。

1 个答案:

答案 0 :(得分:1)

使用XPath 2.0引擎(我认为XML Spy支持),您可以//*:Value选择具有本地名称Value的任何元素。