2014-04-30 53 views
-1

這是我想解析的xml文檔。我需要獲得賬戶的所有餘額並將它們加在一起得到總計。但是我對如何做到這一點感到不知所措。使用xpath在java中解析XML文檔

<?xml version="1.0"?> 
<!-- <!DOCTYPE bank SYSTEM "bank.dtd"> --> 

-<bank> 
    -<account> 
     <number>3</number> 
     <balance>1295.32</balance> 
    </account> 
    -<account> 
     <number>5</number> 
     <balance>3504.63</balance> 
    </account> 
    -<account> 
     <number>7</number> 
     <balance>872.00</balance> 
    </account> 
</bank> 

我這段代碼到目前爲止,但不能得到它的工作,不知道如何去做這件事。

public Bank parse(String fileName) throws SAXException, IOException, 
     XPathExpressionException { 
    File f = new File(fileName); 
    Document doc = builder.parse(f); 

    // get the bank 

    Bank b = new Bank(); 

    XPathFactory xpfactory = XPathFactory.newInstance(); 
    XPath path = xpfactory.newXPath(); 



     int itemCount = Integer.parseInt(path.evaluate("count(/bank/account/number)", 
      doc)); 


    for (int i = 1; i<= itemCount; i++) { 

String balance = path.compile 
    ("/bank/account[" + i + "]/number/balance").evaluate(doc); 

    System.out.println(balance); 
+0

你的Java代碼是不完整的(請張貼至少完整的方法)。您是否爲每個帳戶打印餘額?您還可以用一個XPath表達式對所有餘額進行求和:'sum(/ bank/account/balance)'。 – helderdarocha

回答

0

您讀取項目數的XPath是正確的。

你可以得到所有的平衡元素之和有:

sum(/bank/account/balance) 

沒有/bank/account[1]/number/balance。該表達式返回一個空的結果集。如果要在各個平衡,對於簡單的/balance更換/number/balance/

String balance = path.compile("/bank/account[" + i + "]/balance").evaluate(doc);