gpt4 book ai didi

java - xpath 不接受这个表达式

转载 作者:行者123 更新时间:2023-12-02 07:01:50 26 4
gpt4 key购买 nike

大家好,我有关于 xpath 的问题

/abcd/nsanity/component_details[@component="ucs"]/command_details[<*configScope inHierarchical="true"cookie="{COOKIE}"dn="org-root"*/>]/collected_data

我想检索 xpath 语句上方的字符串,但是当我将此 xpath 提供给 xpath 表达式进行评估时,它会抛出异常,例如

原因:javax.xml.transform.TransformerException:需要位置路径,但遇到以下标记:

最佳答案

XPath 表达式中的粗体部分不是有效的谓词表达式。我只能猜测,你想实现什么目标。如果您只想要<command_details/>元素,其中有 <configScope/>属性设置为 inHierarchical="true" 的子元素, cookie="{COOKIE}"dn="org-root"那么 XPath 表达式应该是:

/abcd/nsanity/component_details[@component='ucs']/command_details[configScope[@inHierarchical='true' and @cookie='{COOKIE}' and @dn='org-root']]/collected_data

下面是一个 XML 示例:

<abcd>
<nsanity>
<component_details component="ucs">
<command_details>
<configScope inHierarchical="true" cookie="{COOKIE}" dn="org-root" />
<collected_data>Yes</collected_data>
</command_details>
<command_details>
<configScope inHierarchical="true" cookie="{COOKIE}" dn="XXX"/>
<collected_data>No</collected_data>
</command_details>
</component_details>
</nsanity>
</abcd>

以下 Java 程序读取 XML 文件 test.xml并计算 XPath 表达式(并打印元素 <collected_data/> 的文本节点。

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;


public class Test {

public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document document = dbf.newDocumentBuilder().parse("test.xml");

XPath xpath = XPathFactory.newInstance().newXPath() ;

NodeList nl = (NodeList) xpath.evaluate("/abcd/nsanity/component_details[@component='ucs']/command_details[configScope[@inHierarchical='true' and @cookie='{COOKIE}' and @dn='org-root']]/collected_data", document, XPathConstants.NODESET);
for(int i = 0; i < nl.getLength(); i++) {
Element el = (Element) nl.item(i);
System.out.println(el.getTextContent());
}
}
}

关于java - xpath 不接受这个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567065/

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