我有一个XML文件并使用Xpath读取信息,我想一起阅读'listings_Id'和'budget_remaining'。
XML示例
<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>
我想将其输出为CSV文件,如下所示
ListingId,BudgetRemaining
2235,50000
303,50000
394,50000
2896,1.39
使用代码
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());
}
输出
/ads/ad/listing_ids/listing_id
2235
303
394
2896
/ads/ad/budget_remaining
50000.0
1.3933399
期望输出
2235,50000.0
303,50000.0
2896,50000.0
2896,1.3933399
如何使用Xpath或任何其他方法读取XML?我希望将'listing_ids'和'budget_ remaining'一起读取为每个'Listing Id',如
303,50000
请帮助我 - Java的新手。
答案 0 :(得分:1)
您可能更容易使用jaxb将XML解析为广告列表。 然后,您可以引用Java列表
答案 1 :(得分:1)
我建议使用XQuery,与XPath不同,它可以返回结构化结果。 (或者XPath 2.0,但如果您要使用XPath 2.0,那么您也可以一直使用XQuery)。
相关查询
string-join(
for $n in /ads/ad/listing_ids/listing_id
return $n/concat(., ',', ../../budget_remaining),
'
'
)
这会将所需的输出作为单个字符串返回。