使用XPath获取具有名称空间的XML节点

时间:2019-04-22 19:08:01

标签: xml xpath automationanywhere

我试图根据包含名称空间的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_STATUS值,其中STORE_ID = WM000001

现在,它找不到该节点。

2 个答案:

答案 0 :(得分:0)

您可以使用与名称空间无关的表达式,例如

//*[local-name() = 'STORE']/*[local-name() = 'STORE_ID' and text() = 'WM000001']/../*[local-name() = 'STORE_STATUS']

这将从所有STORE_STATUS个具有STORE子元素的STORE_ID元素中选择WM000001元素。如果只需要该值,请在表达式的末尾添加一个/text()

答案 1 :(得分:0)

这最终成功了:

//*[local-name() = 'STORE']/*[local-name() = 'STORE_ID' and text() = 'WM000001']/following-sibling::*[local-name() = 'STORE_STATUS']