我有以下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']"
,但是没有返回结果。
答案 0 :(得分:1)
使用XPath 2.0引擎(我认为XML Spy支持),您可以//*:Value
选择具有本地名称Value
的任何元素。