【发布时间】:2020-09-29 11:51:56
【问题描述】:
编辑:我的问题是由一个没有完全实现 XPath 标准的工具引起的。我对
//key@的尝试应该有效(参见 cmets & answer),它不起作用的原因是该工具只显示第一个结果。
我的 XML 如下所示:
<Document id="someIdhere" token="123-456-789" created-by="john_doe" created-at="2020-05-27T10:04:28.244+0000" last-modified-by="jane_doe" last-modified-at="2020-07-30T09:27:59.440+0000">
<somedata/>
<somemoredata/>
<entries>
<entry key="resourceName">resourceLocation</entry>
<entry key="foo">bar</entry>
<entry key="somekey">somevalue</entry>
<entry key="keyname">keyvalue</entry>
<entry key="keyname1">value1</entry>
</entries>
<encryptedEntries/>
</Document>
我正在寻找所有key 属性的值(例如'resourcename'、'foo'等);不是<entry> 节点的值。我无法提前知道会有多少条目,也不知道内容是什么。
我尝试了以下方法:
//@* -> 提供所有属性,不仅是key//entries/@* -> 不返回任何内容//entry@* -> 不返回任何内容//@key -> 只返回第一个结果//entries/key[*] -> 无返回值//entry@key -> 无返回值//entry@key=* -> 无返回值
我可能也尝试过其他人,但这些是我能记住的。如果有任何区别:XPath 由 Xebialabs 的 XLRelease 中的“XML Webhook”任务执行。
【问题讨论】:
-
//@key是获取 all 值的正确方法,因此它不是 XPath 问题,而是您正在使用的工具。也试试//entry/@key -
谢谢@JaSON。
//entry/@key仅返回第一个值,因此显然该工具只是令人讨厌。无论如何,感谢您的帮助,我会看看我能对这个工具做些什么。如果您想让您的评论成为答案,我很乐意接受。 -
我联系了生产我正在使用的工具的公司。显然,这是设计使然:该工具只能检索一个结果。所以我想我要去寻找另一种方法。无论如何感谢您的帮助。