使用 local-name() 从命名空间 XML 到 select 值的 XPath?
XPath to select value from namespaced XML using local-name()?
如何提取/substance/text
和/makers/text
的值?
我期待结果
- 自动化
- 测试记录
我试过很多东西,例如:
//*[local-name()='text/@value']
//*[local-name()='substance']/text/text()
//*[local-name()='name'][1]
(这适用于名字元素,但如果我对文本使用类似的元素则不起作用。)
//*[local-name()='text/@value'][1]
//*[local-name()='text'][1]
<health xmlns="http://test.com/sample">
<substance>
<name>substance</name>
<text value="Automation"/>
</substance>
<user>
<reference value="User/111111122"/>
</user>
<reaction>
<makers>
<name>makers</name>
<text value="Test Record"/>
</makers>
</reaction>
</health>
这个 XPath,
//*[local-name()='text']/@value
将 select 文档中所有 text
元素的所有 value
属性,无论命名空间如何。
请注意,考虑命名空间比以这种方式打败它们要好。参见
不工作?
提供的 XPath select 两个 @value
属性。如果您只看到一个,可能是因为您将结果传递给了一个 XPath 1.0 函数,该函数需要一个值,并且在传递多个值时被定义为 select 节点集的第一个成员。参见 Why does XPath expression only select text of first element?
还是不行?
这里有两个选项 select 单独而不是集体地输入值:
(//*[local-name()='text']/@value)[1]
(//*[local-name()='text']/@value)[2]
//*[local-name()='substance']/*[local-name()='text']/@value
//*[local-name()='makers']/*[local-name()='text']/@value
如何提取/substance/text
和/makers/text
的值?
我期待结果
- 自动化
- 测试记录
我试过很多东西,例如:
//*[local-name()='text/@value']
//*[local-name()='substance']/text/text()
//*[local-name()='name'][1]
(这适用于名字元素,但如果我对文本使用类似的元素则不起作用。)//*[local-name()='text/@value'][1]
//*[local-name()='text'][1]
<health xmlns="http://test.com/sample">
<substance>
<name>substance</name>
<text value="Automation"/>
</substance>
<user>
<reference value="User/111111122"/>
</user>
<reaction>
<makers>
<name>makers</name>
<text value="Test Record"/>
</makers>
</reaction>
</health>
这个 XPath,
//*[local-name()='text']/@value
将 select 文档中所有 text
元素的所有 value
属性,无论命名空间如何。
请注意,考虑命名空间比以这种方式打败它们要好。参见
不工作?
提供的 XPath select 两个 @value
属性。如果您只看到一个,可能是因为您将结果传递给了一个 XPath 1.0 函数,该函数需要一个值,并且在传递多个值时被定义为 select 节点集的第一个成员。参见 Why does XPath expression only select text of first element?
还是不行?
这里有两个选项 select 单独而不是集体地输入值:
(//*[local-name()='text']/@value)[1]
(//*[local-name()='text']/@value)[2]
//*[local-name()='substance']/*[local-name()='text']/@value
//*[local-name()='makers']/*[local-name()='text']/@value