Возврат объектов, созданных при анализе документа XML - PullRequest
1 голос
/ 14 декабря 2011

Итак, я хочу прочитать данные из XML-файла, теперь я нахожусь в точке, где у меня есть XMLReader и ContentHandler на месте, и когда срабатывает endDocument(), я "собрал" все нужные мне данные из документа.

Но теперь кажется, что я врезался в стену ...

Как вернуть собранные данные (из ContentHandler), чтобы их можно было использовать в моем приложении?

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Вы можете создать List<T> в ContentHandler.

public class MyTextHandler implements ContentHandler {
  ....
  private ArrayList<YourModel> list;

  public MyTextHandler() {
    list= new ArrayList<YourModel>();
  }
  public ArrayList<YourModel> getList() {
    return list;
  }
  ....
}

Получить список из обработчика:

MyTextHandler handler=new MyTextHandler();
reader.setContentHandler(handler);
InputSource is = new InputSource(filename);
reader.parse(is);

ArrayList<YourModel> list=handler.getList();
0 голосов
/ 14 декабря 2011

Технически ...

Вы действительно не «возвращаете» данные из ContentHandler - обработчик содержимого не предназначен для выполнения какого-либо конкретного контракта ввода-вывода. Скорее, это объект, который должен «воздействовать» на действия чтения данных XML. Некоторые ContentHandlers могут не взаимодействовать с хост-приложением - например, они могут просто печатать данные на консоль. Между тем, другие могут обрабатывать объекты XML как компоненты, а затем сериализовать эти объекты в базу данных.

Если вы хотите, чтобы ваше приложение «зависело» непосредственно от ContentHandler при создании объектов, то ContentHandler обычно может быть подклассом в вашем приложении, который обращается к модели вашего приложения и записывает данные в эту модель. Под "моделью" здесь я имею в виду М в типичном приложении MVC.

Практический ответ

Интерфейс contentHandler предназначен для определения поведения вашего синтаксического анализатора SAX. Данные часто создаются с помощью метода endDocument (), в котором мы выгружаем все данные XML в базу данных или как операторы печати. ​​

...