gpt4 book ai didi

XPath/XQuery - 匹配包含特定值的所有元素

转载 作者:行者123 更新时间:2023-12-03 15:59:40 25 4
gpt4 key购买 nike

我的 XML 看起来有点像这样:

<root>
<child1>
<grandchild1>{tagID1}<grandchild1/>
<grandchild2>{tag2}<grandchild2/>
</child1>
<child2>{newtag1}<child2/>
<root/>

我正在寻找检索其 text() 类似于“{*}”的所有元素,即在 2 个 curl 之间包含一个字符串,但我不太熟悉 xpath。

我认为 xquery 语法应该是这样的

"//*[matches(., '{*}')]"

但这是失败的未知方法 "-->matches(.<--"

如果有人能纠正我,我将不胜感激。

最佳答案

matches()函数适用于 XPath 2.0,但您的 XPath 引擎可能只支持 XPath 1.0。

如果是这种情况,您将不得不以这样的方式结束:

//*[./text()[starts-with(., '{') and substring(., string-length(.), 1)='}']]

它寻找

ANY ELEMENT
//*
THAT HAS A TEXT NODE
[./text() ]
WHICH STARTS WITH A '{'
[starts-with(., '{') ]
AND ENDS WITH A '}'
and substring(., string-length(.), 1)='}'

substring() 函数调用执行您期望的 ends-with() 函数,如果在 XPath 1.0 中有的话。


编辑(以解决 OP 关于 starts-with() 也未找到的评论)

我从未见过不知道 starts-with() 的 XPath 引擎。如果它至少可以识别 substring() 函数,您可以尝试以下解决方法:

//*[./text()[substring(., 1, 1)='{' and substring(., string-length(.), 1)='}']]

应该做同样的事情。

关于XPath/XQuery - 匹配包含特定值的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com