我有许多随意出现的xml包含Ocount,Lnumber以及其他数据。我创建了一个类来获取数据。
我的问题是如何对具有相同 Lnumber(字符串)的xml进行分组,直到它到达Ocount(int)。(具有相同lnumber的xmls具有相同的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;
}}
我一直在研究这几天,我哪里出错了。
答案 0 :(得分:0)
您似乎无法从xmls获取信息。我建议使用XStream [1]。它能够将对象序列化为xml并返回。通过使用XStream,您可以从xml中获取Object并轻松地比较变量(Lnumber和Ocount)。
如果您坚持使用此代码,我建议添加注释以通知我们您正在做什么,但如果想要使用java更容易替代使用xml文件,我强烈建议使用XStream作为解决方案。