2012-02-22 2 views
0

Я пытаюсь разобрать веб-ответ с DOM парсер, как это:Android DOM парсинг tooo медленно

public static Document parseDocument(InputStream sr) throws Exception { 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    dbf.setNamespaceAware(true); 
    dbf.setIgnoringComments(true); 
    dbf.setIgnoringElementContentWhitespace(true); 
    dbf.setCoalescing(true); 
    //dbf.setValidating(false); 
    Document xdoc = dbf.newDocumentBuilder().parse(new InputSource(sr)); 
    xdoc.normalize(); 
    return xdoc; 
} 

Проблема заключается в том, что

Document xdoc = dbf.newDocumentBuilder().parse(new InputSource(sr)); 

занимает 3 мин для выполнения. Мой xml-файл имеет 3800 строк. Является ли нормальным и как его улучшить?

спасибо.

ответ

1

Это слишком велико для разбора DOM в Android. Потребление памяти и распределение объектов являются порообразовательными. SAX asin предыдущий ответ является работоспособным решением, но Pull-Parser (также содержащийся в API-интерфейсах android) является лучшим и более современным выбором, поскольку проще программировать (при использовании парсеров SAX обрабатываются и помещаются XML-события в ваш обработчик, а XPP it это ваше приложение, управляющее парсером и вытягивающее события xml из потока).

Даже лучшим выбором будет некоторый легкий механизм привязки данных, построенный на основе анализатора тяги - jackson, xstream и т. д. Они будут поставлять только объекты - у вас нет беспокоиться о разборе xml вообще

+0

Благодарим вас за этот ответ. Где я могу найти подходящий пример Pull-Parser, пожалуйста? –

+0

просто Google для продуктов. есть образцы –

Смежные вопросы