gpt4 book ai didi

java - Xpath 从错误节点返回值

转载 作者:行者123 更新时间:2023-12-02 00:41:27 25 4
gpt4 key购买 nike

我在使用 XPath 时遇到了一些问题。由于某种未知的原因,我从表达式中得到的结果是函数另一次运行的结果。

这是我的类的构造函数:

Wine(Node ndWine){
try{
xpath = XPathFactory.newInstance().newXPath();
}
catch(Exception e)
{}

Node ndName = null;

try{
ndName = (Node)xpath.evaluate("//name", ndWine, XPathConstants.NODE);
}
catch(Exception e)
{}
if (ndName != null)
name = ndName.getTextContent();
}

这是 XML:

<cellar>
<wine>
<name>Jasnières</name>
</wine>
<wine>
<name>Ballet d'Octobre</name>
</wine>
</cellar>

在调用方法中,我有另一个 xpath 表达式,它将文档分解为 <wine> 列表元素。每个节点都会调用上面的代码。
在调试器中,我检查第二次运行时 ndWine节点实际上包含来自文档第二个节点的数据,但计算始终返回 Jasnieres值而不是 ballet d'octobre ,我无法理解。

知道根本原因吗?

最佳答案

//开始XPath表达式使其成为绝对路径。即使您传入 <wine>它会忽略它并从文档根目录开始。添加.在前面使其成为相对路径:

.//name

或者更好的是,避免 //如果可以的话语法。最好避免做完整的 descendant-or-self如果您确切知道<name>在哪里,请搜索元素将会。如果它们总是直接位于 <wine> 内元素然后使用此 XPath:

name

关于java - Xpath 从错误节点返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272244/

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