我正在尝试根据包含命名空间的 xml 文件中元素中的值来选择节点。
我正在使用Automation Anywhere的Get XML Node命令,该命令限制我使用单行XPath语句。
这是示例 xml 文件
<IMPORT xmlns="urn:Import">
<STUFF>
<STUFF_TYPE>
<STUFF_TYPE_KEY>1</STUFF_TYPE_KEY>
</STUFF_TYPE>
<WALMART>
<STORE>
<STORE_ID TYPE="SC" ID="SC-12345">WM000001</STORE_ID>
<STORE_STATUS>O</STORE_STATUS>
</STORE>
</WALMART>
</STUFF>
</IMPORT>
我想选择STORE_ID = WM000001的STORE_STATUS值
现在,它没有找到节点。
您可以使用与命名空间无关的表达式,例如
//*[local-name() = 'STORE']/*[local-name() = 'STORE_ID' and text() = 'WM000001']/../*[local-name() = 'STORE_STATUS']
这将从具有值为 WM000001
的所有STORE
元素中选择具有STORE_ID
子元素的 STORE_STATUS
元素。如果只需要该值,请在表达式末尾添加一个/text()
。
这最终起作用了:
//*[local-name() = 'STORE']/*[local-name() = 'STORE_ID' and text() = 'WM000001']/following-sibling::*[local-name() = 'STORE_STATUS']