如何在java w/o DOM中读取XML?
我有一个XML文件,使用Xpath读取信息,我想同时读取“清单Id”和“预算剩余” XML示例如何在java w/o DOM中读取XML?,java,xml,xpath,Java,Xml,Xpath,我有一个XML文件,使用Xpath读取信息,我想同时读取“清单Id”和“预算剩余” XML示例 <ads> <ad> <listing_ids> <listing_id>2235</listing_id> <listing_id>303</listing_id> <listing_id>394</listing_id> </
<ads>
<ad>
<listing_ids>
<listing_id>2235</listing_id>
<listing_id>303</listing_id>
<listing_id>394</listing_id>
</listing_ids>
<reference_id>11</reference_id>
<net_ppe>0.55</net_ppe>
<budget_remaining>50000.0</budget_remaining>
</ad>
<ad>
<listing_ids>
<listing_id>2896</listing_id>
</listing_ids>
<reference_id>8</reference_id>
<net_ppe>1.5</net_ppe>
<budget_remaining>1.3933399</budget_remaining>
</ad>
</ads>
使用代码
String expression = "/ads/ad/listing_ids/listing_id";
System.out.println(expression);
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(docum, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.println(nodeList.item(i).getFirstChild().getNodeValue());
}
String expression1 = "/ads/ad/budget_remaining";
System.out.println(expression1);
NodeList nodeList1 = (NodeList) xPath.compile(expression1).evaluate(docum, XPathConstants.NODESET);
for (int i = 0; i < nodeList1.getLength(); i++) {
System.out.println(nodeList1.item(i).getFirstChild().getNodeValue());
}
期望输出
2235,50000.0
303,50000.0
2896,50000.0
2896,1.3933399
如何使用Xpath或任何其他方法读取XML?我希望针对每个“列表Id”一起读取“列表Id”和“剩余预算”,如
303,50000
请帮助我了解Java。使用jaxb将XML解析为广告列表可能更容易。
然后可以引用Java列表,我建议使用XQuery,它与XPath不同,可以返回结构化结果。(或者XPath2.0,但是如果您要使用XPath2.0,那么最好直接使用XQuery) 相关查询是
string-join(
for $n in /ads/ad/listing_ids/listing_id
return $n/concat(., ',', ../../budget_remaining),
'
'
)
这将以单个字符串的形式返回所需的输出。请检查:@MarkW:这对我没有帮助。我已经根据实际需求修改了这个问题,希望它能有所帮助。
表达式
是否包含您发送的实际表达式?您可以使用//listing\u id/listing\u id[2]
获取listing\u id
。您是否希望获得与ID关联的net\u ppe
?您可以构建一个包含所选ID的表达式,如下所示“//ad[listing\u ids/listing\u ID=“+ID+”]/net\u ppe”
,您将获得第二个值。我想通过这篇文章和上面的教程,你也许能够解决你的问题。@helderdarocha:它成功了,谢谢。
303,50000
string-join(
for $n in /ads/ad/listing_ids/listing_id
return $n/concat(., ',', ../../budget_remaining),
'
'
)