gpt4 book ai didi

java - 为 xpathexpression 节点列表的每个成员添加前缀

转载 作者:行者123 更新时间:2023-12-01 14:47:42 27 4
gpt4 key购买 nike

我想构造一个 xpath 查询,这样 xpathexpression .evaulate 返回以任意字符串为前缀的值列表。

使用单个结果实现此目的是一个简单的 concat('PREFIX:',/returns/one/node),尽管有效的 xpath 查询 /returns/many/nodes/concat xpathexpression 不接受 ('PREFIX:',text()) .评估。

这是我的函数调用:


NodeList resultNodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
String collectionIDs[] = new String[resultNodes.getLength()];

这是我收到的错误:


javax.xml.transform.TransformerException:未知节点类型:concat

有人知道评估友好的替代方案吗?

提前谢谢

最佳答案

那是因为您的“有效 xpath 查询”无效。 concat()是一个接受参数的函数,这就是为什么你的第一个 xpath: concat('PREFIX:',/returns/one/node)正在正确使用并且有效。

当你将它放在 xpath 的末尾时,就像你在这里所做的那样:/returns/many/nodes/concat('PREFIX:',text())它正在尝试查找名为“concat”的节点类型,但该类型不存在,因此您收到了错误。

expr.evaluate()将评估您的concat('PREFIX:',/returns/one/node)作为参数,但因为它期望返回类型为节点列表,并且 concat()返回一个字符串类型,这也不起作用,所以你有几个选择:

您必须提供 /returns/many/nodes 的 xpath至evaluate() ,然后设置 String[] 的索引 0在用您的 XPath 结果填充之前先输入“PREFIX:”。

或者

您可以评估concat('PREFIX:',/returns/one/node) xpath 并将预期类型更改为字符串,但随后您需要处理一个长字符串。

关于java - 为 xpathexpression 节点列表的每个成员添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254496/

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