如何编写 xpath 表达式以从具有属性的节点中提取字符串?

How do I write an xpath expression to exctract a string from a node with attribute in it?

<?xml version="1.0" encoding="UTF-8"?>
<IDMResponse xmlns="http://www.nrf-arts.org/IXRetail/namespace/" MajorVersion="1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ARTSHeader>
        <MessageID>1</MessageID>
        <Response ResponseCode="Ok">
            <RequestID>1</RequestID>
        </Response>
    </ARTSHeader>
</IDMResponse>

我试过了
//[本地名称() = 'Response'] 和 @//*[local-name() = 'Response']

要访问 <Response ResponseCode="Ok"> 节点,您可以使用

//Response

要从那里提取 Ok 值,这应该可行:

//Response/@ResponseCode

而不是

//[local-name() = 'Response']

使用

//*[local-name() = 'Response']

谓词 ([]) 需要筛选的内容。

// 不选择任何内容。它告诉寻找任何后代的东西。但它至少需要以下属性或节点才能知道要做什么。

/*选择元素名称的根节点独立

//* 选择名称独立的所有元素节点

//@ 选择名称独立的所有属性

//Response 选择名称为 Response 且不在命名空间中的所有元素

//*[local-name()='Response'] 从名称空间中选择名称为 Response independend 的所有元素

//*[local-name()='Response' and @ResponseCode='Ok'] 选择名称为 Response(独立于命名空间)且属性 ResponseCode 值为 Ok

的所有元素

还有一些 examples

然后看看 this answer