Лучший способ разобрать xml
я разбирал XML вот так годами, и я должен признать, что когда количество различных элементов становится больше, я нахожу это немного скучным и утомительным, вот что я имею в виду, образец фиктивного XML:
2003/07/04
123
Acme Alpha
987
Coupler
5
654
Connector
3
579
Clasp
1
Это актуальная часть (с помощью саксофона): I '
public class SaxParser extends DefaultHandler {
boolean isItem = false;
boolean isOrder = false;
boolean isDate = false;
boolean isCustomerId = false;
private Order order;
private Item item;
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
if (localName.equalsIgnoreCase("ORDER")) {
order = new Order();
}
if (localName.equalsIgnoreCase("DATE")) {
isDate = true;
}
if (localName.equalsIgnoreCase("CUSTOMERID")) {
isCustomerId = true;
}
if (localName.equalsIgnoreCase("ITEM")) {
isItem = true;
}
}
public void characters(char ch[], int start, int length) throws SAXException {
if (isDate){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
String value = new String(ch, start, length);
try {
order.setDate(formatter.parse(value));
} catch (ParseException e) {
e.printStackTrace();
}
}
if(isCustomerId){
order.setCustomerId(Integer.valueOf(new String(ch, start, length)));
}
if (isItem) {
item = new Item();
isItem = false;
}
}
}
Интересно, есть ли способ избавиться от этих отвратительных логических выражений, которые продолжают расти с количеством элементов. Должен быть лучший способ разобрать этот относительно простой XML. Просто глядя на строки кода, необходимые для выполнения этой задачи, выглядит некрасиво.
В настоящее время я 'я использую парсер SAX, но яЯ открыт для любых других предложений (кроме DOM, я могуЯ не могу себе позволить парсеры памяти, у меня есть огромные XML-файлы).