这是XML文件:
我需要解析它看起来像这样:Van (VID-12345) Customers Adams, Maurice at 123 4th St, 13126 Baxter, Robert at 234 5th St, 13126 Total $17.00 Cart (VID-23456) Customers Charles, Steven at 345 6th St, 13126 Total $1.00 如何将其解析为建议的格式?我已经阅读了许多教程和示例,但是找不到可以帮助我的教程和示例。从我所读的书中,我最大的猜测是它与创建列表或创建要解析的对象有关。我也无法弄清楚如何计算“总计”(即单价*每个“包装”中所有商品的数量之和)。 public class MyHandler extends DefaultHandler {
@Override
public void startDocument() throws SAXException {
System.out.println("---=== Report ===---");
}
@Override
public void endDocument() throws SAXException {
System.out.println("---=== End of Report ===---");
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("van")) {
System.out.println("Van (" + attributes.getValue("id") + ")");
}
if (qName.equalsIgnoreCase("customer")) {
System.out.println(" Customer");
System.out.println(" " + attributes.getValue("lastName") + ", " + attributes.getValue("firstName") + " at " + attributes.getValue("streetAddress") + ", " + attributes.getValue("zipCode"));
}
if (qName.equalsIgnoreCase("cart")) {
System.out.println("Cart (" + attributes.getValue("id") + ")");
}
if (qName.equalsIgnoreCase("product")) {
double sum = Double.parseDouble(attributes.getValue("unitPrice")) * Integer.parseInt(attributes.getValue("quantity"));
System.out.println(sum);
}
}
} 结果(不正确):
---=== Report ===--- Van (VID-12345) 10.0 4.0 Customer Adams, Maurice at 123 4th St, 13126 1.0 2.0 Customer Baxter, Robert at 234 5th St, 13126 Cart (VID-23456) 1.0 Customer Charles, Steven at 345 6th St, 13126 ---=== End of Report ===---
import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element;
import java.util.List;
/** * @Author: panlf * @Date: 2019/9/16 9:27 / public class Dom4jTeset { public static void main(String[] args) throws DocumentException { Element root = DocumentHelper.parseText(XML).getRootElement(); List all = root.elements(); for (Element child : all) { System.out.println(child.getQName().getName()+" ("+ child.attribute("id").getValue()+")"); System.out.println(" Customer"); double sum=0; for (Element pack : child.elements()) { Element customer = pack.elements("customer").get(0); for (Element prod : pack.elements()) { if(prod.getQName().getName().equals("customer"))continue; String unitPrice = prod.attribute("unitPrice").getValue(); sum+=Double.parseDouble(prod.attribute("unitPrice").getValue()) Integer.parseInt(prod.attribute("quantity").getValue()); } System.out.println(" "+ customer.attribute("lastName").getValue()+", "+ customer.attribute("firstName").getValue()+ " at " + customer.attribute("streetAddress").getValue()+" "+ customer.attribute("zipCode").getValue()); } System.out.println(" Total"); System.out.println(" $"+sum); } }
private static String XML="<?xml version=\"1.0\" ?>\n" +
"<deliveries>\n" +
" <van id=\"VID-12345\">\n" +
" <package>\n" +
" <product taxable=\"true\" productName=\"Headphones\" isbn=\"123456\" unitPrice=\"10.00\" quantity=\"1\"/>\n" +
" <product taxable=\"false\" productName=\"Milk\" isbn=\"234567\" unitPrice=\"2.00\" quantity=\"2\"/>\n" +
" <customer lastName=\"Adams\" firstName=\"Maurice\" streetAddress=\"123 4th St\" zipCode=\"13126\" accountNumber=\"ACCT-54321\"/>\n" +
" </package>\n" +
" <package>\n" +
" <product taxable=\"true\" productName=\"Snickers\" isbn=\"345678\" unitPrice=\"1.00\" quantity=\"1\"/>\n" +
" <product taxable=\"false\" productName=\"Milk\" isbn=\"234567\" unitPrice=\"2.00\" quantity=\"1\"/>\n" +
" <customer lastName=\"Baxter\" firstName=\"Robert\" streetAddress=\"234 5th St\" zipCode=\"13126\" accountNumber=\"ACCT-65432\"/>\n" +
" </package>\n" +
" </van>\n" +
" <cart id=\"VID-23456\">\n" +
" <package>\n" +
" <product taxable=\"true\" productName=\"Snickers\" isbn=\"345678\" unitPrice=\"1.00\" quantity=\"1\"/>\n" +
" <customer lastName=\"Charles\" firstName=\"Steven\" streetAddress=\"345 6th St\" zipCode=\"13126\" accountNumber=\"ACCT-76543\"/>\n" +
" </package>\n" +
" </cart>\n" +
"</deliveries>";
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。