Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XPath用于所有属性值,而不仅仅是第一个?_Xml_Xpath_Xlrelease - Fatal编程技术网

Xml XPath用于所有属性值,而不仅仅是第一个?

Xml XPath用于所有属性值,而不仅仅是第一个?,xml,xpath,xlrelease,Xml,Xpath,Xlrelease,编辑:在我的例子中,这个问题是由一个没有完全实现XPath标准的工具引起的。我对//key@的尝试应该有效,请参见注释和答案,但它不起作用的原因是该工具仅显示第一个结果 我的XML如下所示: <Document id="someIdhere" token="123-456-789" created-by="john_doe" created-at="2020-05-27T10:04:28.244+0000" l

编辑:在我的例子中,这个问题是由一个没有完全实现XPath标准的工具引起的。我对//key@的尝试应该有效,请参见注释和答案,但它不起作用的原因是该工具仅显示第一个结果

我的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>
我希望得到所有关键属性的值,比如“resourcename”、“foo”等;而不是节点的值。我无法事先知道会有多少条参赛作品,也无法知道内容是什么

我尝试了以下方法:

//@*->提供所有属性,而不仅仅是键 //entries/@*->不返回任何内容 //条目@*->不返回任何内容 //@键->仅返回第一个结果 //条目/键[*]->不返回任何内容 //entry@key->不返回任何内容 //entry@key=*->不返回任何内容


我可能也试过其他人,但这些是我能记得的。如果有区别的话:XPath由Xebialabs的XLRelease中的“XML Webhook”任务执行。

@JaSON已经为您提供了两个可行的XPath 1:

//@键将选择文档中的所有键属性。 //entry/@key将选择文档中entry元素的所有键属性。 您已经指出//entry/@key只返回第一个值,并将其归为工具/库不符合项。请注意,有些库API对返回第一个选定项和返回所有选定项有不同的调用

以下是您每次尝试的解释:

//@*选择文档中的所有属性。 //entries/@*不选择任何内容,因为条目没有属性。 //条目@*在语法上不正确。 //@键选择文档中的所有键属性,但请参见上面的API注释。 //entries/key[*]选择entries元素的所有关键子元素,其中至少有一个子元素 //entry@key在语法上是不正确的。 //entry@key=*在语法上不正确。
如果他发布了一个答案,我将对他的答案进行投票。

@JaSON已经为你提供了两个可行的XPath 1:

//@键将选择文档中的所有键属性。 //entry/@key将选择文档中entry元素的所有键属性。 您已经指出//entry/@key只返回第一个值,并将其归为工具/库不符合项。请注意,有些库API对返回第一个选定项和返回所有选定项有不同的调用

以下是您每次尝试的解释:

//@*选择文档中的所有属性。 //entries/@*不选择任何内容,因为条目没有属性。 //条目@*在语法上不正确。 //@键选择文档中的所有键属性,但请参见上面的API注释。 //entries/key[*]选择entries元素的所有关键子元素,其中至少有一个子元素 //entry@key在语法上是不正确的。 //entry@key=*在语法上不正确。
如果他发布了答案,我将对其进行投票。

/@key是获取所有值的正确方法,因此这不是XPath问题,而是您正在使用的工具。试试//entry/@key,谢谢@JaSON//entry/@key只返回第一个值,因此显然该工具只是一个麻烦。无论如何谢谢你的帮助,我会看看我能对这个工具做些什么。如果你想让你的评论成为答案,我很乐意接受。我联系了生产我使用的工具的公司。显然,这是出于设计:该工具只能检索一个结果。所以我想我要去找另一种方法了。无论如何,感谢您的帮助。//@key是获取所有值的正确方法,因此这不是XPath问题,而是您正在使用的工具。试试//entry/@key,谢谢@JaSON//entry/@key只返回第一个值,因此显然该工具只是一个麻烦。无论如何谢谢你的帮助,我会看看我能对这个工具做些什么。如果你想让你的评论成为答案,我很乐意接受。我联系了生产我使用的工具的公司。显然,这是出于设计:该工具只能检索一个结果。所以我想我要去找另一种方法了。无论如何,谢谢你的帮助。我联系了生产我使用的工具的公司。显然,这是出于设计:该工具只能检索一个结果。所以我想我要去找另一种方法了。无论如何,谢谢你的帮助。我已经接受了你的回答,但是如果Jason决定把他的评论变成回答,我会接受他的,因为他是第一个。我联系了生产我使用的工具的公司。显然,这是出于设计:该工具只能检索一个结果。所以我想我要去找另一种方法了。谢谢你的帮助。我已经接受了你的回答,但是如果杰森决定把他的评论变成一个答案,我会接受他的,因为他是第一个。