Я учусь анализировать XML и получил домашнее задание для анализа XML-файла, который выглядит следующим образом:
<?xml version="1.0" ?>
<deliveries>
<van id="VID-12345">
<package>
<product taxable="true" productName="Headphones" isbn="123456" unitPrice="10.00" quantity="1"/>
<product taxable="false" productName="Milk" isbn="234567" unitPrice="2.00" quantity="2"/>
<customer lastName="Adams" firstName="Maurice" streetAddress="123 4th St" zipCode="13126" accountNumber="ACCT-54321"/>
</package>
<package>
<product taxable="true" productName="Snickers" isbn="345678" unitPrice="1.00" quantity="1"/>
<product taxable="false" productName="Milk" isbn="234567" unitPrice="2.00" quantity="1"/>
<customer lastName="Baxter" firstName="Robert" streetAddress="234 5th St" zipCode="13126" accountNumber="ACCT-65432"/>
</package>
</van>
<cart id="VID-23456">
<package>
<product taxable="true" productName="Snickers" isbn="345678" unitPrice="1.00" quantity="1"/>
<customer lastName="Charles" firstName="Steven" streetAddress="345 6th St" zipCode="13126" accountNumber="ACCT-76543"/>
</package>
</cart>
</deliveries>
Мне нужно проанализировать его, чтобы он выглядел следующим образом:
Van (VID-12345)
Customers
Adams, Maurice at 123 4th St, 13126
Baxter, Robert at 234 5th St, 13126
Cart (VID-23456)
Customers
Charles, Steven at 345 6th St, 13126
Как мне разобрать это, чтобы выглядеть так? Я прочитал много уроков, но они используют очень сложный XML или очень простой в качестве примеров, но я думаю, что это как-то связано с созданием списка и созданием объектов для анализа. Я много часов пытался найти решение, но не мог найти правильный способ сделать это. Решение было бы неплохо, но даже подсказка (и ссылка на учебник) также была бы полезна для руководства. Я действительно ценю любую помощь. Также вот что я получил:
public class MyHandler extends DefaultHandler {
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("van")) {
System.out.println("---=== Report ===---");
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") + ")");
System.out.println("---=== End of Report ===---");
}
}
}
Результат (который выглядит очень неправильно):
---=== Report ===---
Van (VID-12345)
Customer
Adams, Maurice at 123 4th St, 13126
Customer
Baxter, Robert at 234 5th St, 13126
Cart (VID-23456)
---=== End of Report ===---
Customer
Charles, Steven at 345 6th St, 13126