gpt4 book ai didi

java - xpath 上下文的问题

转载 作者:行者123 更新时间:2023-12-02 06:57:24 26 4
gpt4 key购买 nike

我有一个简单的 xml 文档:

<Results>
<Result>
<Number>1</Number>
<Data>a</Data>
</Result>
<Result>
<Number>2</Number>
<Data>b</Data>
</Result>
</Results>

我正在尝试使用以下代码获取每个结果的数据和数量:

XPathExpression resExpr = xpath
.compile("//Results/Result");
XPathExpression numExpr=xpath
.compile("//Result/Number");
XPathExpression dataExpr=xpath
.compile("//Result/Data");
NodeList nodeList = (NodeList) resExpr.evaluate(root_node,
XPathConstants.NODESET);
for (int i=0;i<nodeList.getLength();i++) {

Node result=nodeList.item(i);

if (result!=null) {
Node numNode=(Node) numExpr.evaluate(result,
XPathConstants.NODE);
Node dataNode=(Node) dataExpr.evaluate(result,
XPathConstants.NODE);
String data=dataNode.getTextContent());
String num=numNode.getTextContent());

}
}

但是,我在两次迭代中都得到 1/a。似乎传递一个节点并不会让 xpath 将其用作上下文,而是查看整个树?

最佳答案

这是因为您的 xpath 表达式以 // 开头。这意味着从文档根目录开始搜索任何子项。要访问当前节点的子节点,请尝试 .// 作为任何深度的子节点,或 ./ 作为直接子节点。

或者,因为当前不在迭代中的是 Result,所以您可以使用:

XPathExpression numExpr=xpath
.compile("Number");
XPathExpression dataExpr=xpath
.compile("Data");

关于java - xpath 上下文的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136854/

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