0

我有一些随机出现的 xml,其中包含 Ocount、Lnumber 以及其他数据。我创建了一个类来获取该数据。

我的问题是如何将具有相同Lnumber(string) 的 xml 分组,直到它到达 Ocount(int)。(具有相同 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

您似乎很难从 xmls 中获取信息。我建议使用 XStream [1]。它能够将对象序列化为 xml 并返回。通过使用 XStream,您可以从 xml 中获取 Object 并轻松比较变量(Lnumber 和 Ocount)。

如果您坚持使用此代码,我建议添加注释以通知我们您在做什么,但如果想要更简单的替代方法来使用 java 处理 xml 文件,我强烈建议使用 XStream 作为解决方案。

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

于 2012-09-28T18:33:04.127 回答