2014-02-19 10 views
0

我有一個XML文件並使用Xpath讀取信息,我想一起閱讀'listings_Id'和'budget_remaining'。如何讀取Java中的w/o DOM中的XML?

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_餘額」一起被讀取每個「商家ID」像

303,50000 

請幫我,對Java。

+0

看看這個:http://viralpatel.net/blogs/java-xml-xpath-tutorial-parse-xml/ –

+0

@MarkW:這對我沒有任何幫助。我已經將問題修改爲實際需求,希望對您有所幫助。 – user3188390

+0

'expression'是否包含您要發送的實際表達式? – helderdarocha

回答

1

您可能更容易使用jaxb將XML解析爲廣告列表。 然後你可以參考你的Java列表

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), 
    '&#xa;' 
) 

這將返回所需的輸出作爲一個字符串。