2012-09-28 56 views
0

我有一些xml的隨意進來,包含一個Ocount和Lnumber,以及其他數據。我創建了一個類來獲取這些數據。分組重複,直到一個特定的計數

我的問題是,如何將具有相同Lnumber(字符串)的xml分組,直到到達Ocount(int)。(具有相同lnumber的xmls具有相同的Ocount)。並最終發送一封電子郵件告訴xml已被處理。

String readLine = FileHandler.checkListFile(sh.getShipmentHeader().getBillToCustomer()); 

      if (!readLine.isEmpty()) 
      { 
       int orderCount = 0; 
       int index = readLine.indexOf(";") + 1; 

       String customerName = readLine.substring(index, readLine.indexOf(";", index)).trim(); 

       index = readLine.indexOf(";", index) + 1; 
       String to = readLine.substring(index, readLine.length()).trim(); 



       if (!billMap.containsKey(sh.getShipmentHeader().getBillToCustomer())) 
        { 
        billMap.put(sh.getShipmentHeader().getBillToCustomer(), 1); 
        orderCount = 1; 
        } 
       else 
        { 
        billMap.put(sh.getShipmentHeader().getBillToCustomer(), ((int) billMap.get(sh.getShipmentHeader().getBillToCustomer())) + 1); 
        orderCount = (int) billMap.get(sh.getShipmentHeader().getBillToCustomer()); 
        } 

       outboundMessage += sh.getShipmentHeader().getOrderNumber() + li ; 

       logger.info("On-Demand Outbound Export Info: " + orderCount + " processed out of " + sh.getShipmentHeader().getOrderCount() + 
         " for " + customerName); 


       if (orderCount == sh.getShipmentHeader().getOrderCount()) 
        { 
        Email email = new Email(); 
        billMap.remove(sh.getShipmentHeader().getBillToCustomer()); 
        outboundMessage += li + "Total of #"+ sh.getShipmentHeader().getOrderCount() + " orders processed for "+ customerName + li ; 
        logger.info("On-Demand Email sent for " + customerName); 
        System.out.println(outboundMessage); 
        email.outboundEmail("TEST: Orders for " + customerName + " complete", outboundMessage, to); 
        outboundMessage = ""; 
        email = null; 
        }} 

我一直在爲此工作幾天,我在哪裏出錯了。

+1

你的解釋不是很清楚。你可以嘗試閱讀它,或者重寫它或讓它更清晰。 – thatidiotguy

回答

0

看起來你很難從xml獲取信息。我建議使用XStream [1]。它能夠將對象序列化爲xml並返回。通過使用XStream,您可以從xml中獲取對象,並輕鬆地比較變量(Lnumber和Ocount)。

如果你堅持使用這段代碼,我建議添加註釋來通知我們你在做什麼,但是如果想要一個更簡單的方法來使用java來處理xml文件,我強烈建議使用XStream作爲解決方案。

[1] http://x-stream.github.io/

+0

對不起,我沒有正確解釋我的問題,我創建了一個對象來解析這些信息,併爲Lnumber和OCount設置了getter和setter。然而,是否可以創建一個數組或Map,以便我可以存儲所有的xml對象,然後檢索分組重複時需要的數據? – kachrahp

+0

Lnumber和OCount存儲在一個xml文件中,並且您試圖獲取它們,以便您可以與其他xml文件進行比較嗎? – Sweebo

+0

如果是這樣,請閱讀我參考的網站上的簡單2分鐘教程。這會讓你開始從xml文件中獲取對象,並使重複的分組變得更容易。 – Sweebo