ai didi

java - Xpath - 为什么只返回 1 个值?

转载 作者:行者123 更新时间:2023-12-01 09:10:51 24 4
gpt4 key购买 nike

给定 xml 片段:

<AddedExtras>
<AddedExtra Code="1234|ABCD" Quantity="1" Supplier="BDA"/>
<AddedExtra Code="5678|EFGH" Quantity="1" Supplier="BDA"/>
<AddedExtra Code="9111|ZXYW" Quantity="1" Supplier="BDA"/>
</AddedExtras>

以下 XPath 表达式:

//*["AddedExtra"]/@Code

当通过检查器运行时,计算结果为:

Attribute='Code=1234|ABCD'
Attribute='Code=5678|EFGH'
Attribute='Code=9111|ZXYW'

为什么下面的代码只返回第一行?

private String allCodes = "//*["AddedExtra"]/@Code";

从系统获取我的 XML 并将其解析为文档:

public Document parseResponse(String response){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder;
Document doc = null;
//Create a document reader and an XPath object

try {
builder = factory.newDocumentBuilder();
doc = builder.parse(new InputSource((new StringReader(response))));

} catch (ParserConfigurationException | org.xml.sax.SAXException | IOException e) {
e.printStackTrace();
}
return doc;
}

获取新文档:

 public Document getParsedResponse(String response) {
return parseResponse(response);
}

从文档返回 Xpath 值:

public String getAllCodeOptions(String response){
Document doc = getParsedResponse(response);
return getNodeValueFromNodeList(doc, allCodes);
}

读取 XML 节点的新方法:

public String getNodeValueFromNodeList(Document doc, String expression){
NodeList nodeList = null;
String nodes = null;
try {
nodeList = (NodeList) xpath.compile(expression).evaluate(doc, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
for(int i=0; i < nodeList.getLength(); i++){
Node node = nodeList.item(i);
nodes = node.getNodeValue();
}
return nodes;
}

返回:

 Attribute='Code=1234|ABCD'

最佳答案

您需要使用正确的评估方法,该方法将返回类型作为参数。像下面这样,

NodeSet result = (NodeSet)e.evaluate(e, doc, XPathConstants.NODESET); 
for(int index = 0; index < result.getLength(); index ++)
{
Node node = result.item(index);
String name = node.getNodeValue();
}

关于java - Xpath - 为什么只返回 1 个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933038/

24 4 0
文章推荐: python - 如何在崩溃时自动重启你的不和谐机器人
文章推荐: vb.net - 将 varchar 转换为 smalldatetime 会导致值超出范围
文章推荐: python - Plotly Geoscatter 与聚合 : show aggregation in hover Info
文章推荐: SQL Server 快照隔离级别问题
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com