gpt4 book ai didi

java - XPath 查询返回重复节点

转载 作者:行者123 更新时间:2023-12-01 15:51:16 25 4
gpt4 key购买 nike

我有一个正在 Java 中处理的 SOAP 响应。它有一个元素和几个不同的子元素。我使用以下代码尝试获取所有绑定(bind)节点并查找哪个节点具有值为 ACTIVE 的子标签。初始评估语句返回的 NodeList 包含 4 个节点,这是 SOAP 响应中子节点的正确数量,但它们都是第一个元素的重复项。这是代码:

NodeList nodes = (NodeList)xpath.evaluate("//:bond", doc, XPathConstants.NODESET);
for(int i = 0; i < nodes.getLength(); i++){
HashMap<String, String> map = new HashMap<String, String>();
Element bond = (Element)nodes.item(i);

// Get only active bonds
String status = xpath.evaluate("//:status", bond);
String id = xpath.evaluate("//:instrumentId", bond);

if(!status.equals("ACTIVE"))
continue;

map.put("isin", xpath.evaluate(":isin", bond));
map.put("cusip", xpath.evaluate(":cusip", bond));
}

感谢您的帮助,贾里德

最佳答案

您直接问题的答案是像 //:status 这样的表达式将忽略您传入的节点,并从文档的根开始。

但是,可能有比您现有的解决方案更简单的解决方案,即使用 XPath 将测试应用到节点。我认为这应该可行,尽管它可能包含拼写错误(特别是,我不记得 text() 是否可以独立存在或必须在谓词表达式中使用):

//:bond/:status[text()='ACTIVE']/..

关于java - XPath 查询返回重复节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979810/

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