0

Ocount、Lnumber、およびその他のデータを含む、無計画に入ってくるxmlがいくつかあります。そのデータを取得するためのクラスを作成しました。

私の問題は、Ocount(int)に到達するまで、同じLnumber(string)を持つxmlをどのようにグループ化できるかということです。(同じlnumberを持つxmlは同じOcountを持ちます)。そして最終的には、xmlsが処理されたことを通知する電子メールを送信します。

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;
                    }}

私はこれに何日も取り組んでいますが、どこが間違っているのでしょうか。

4

1 に答える 1

0

XMLから情報を取得するのに問題があるようです。XStream[1]を使用することをお勧めします。オブジェクトをxmlにシリアル化して戻すことができます。XStreamを使用すると、xmlからオブジェクトを取得し、変数(LnumberとOcount)を簡単に比較できます。

このコードの使用を主張する場合は、コメントを追加して何をしているかを通知することをお勧めしますが、Javaを使用してxmlファイルを操作するより簡単な代替手段が必要な場合は、ソリューションとしてXStreamを使用することを強くお勧めします。

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

于 2012-09-28T18:33:04.127 に答える