如何编写 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
<?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