SAXParser с локальным файлом XML

Я прочитал несколько тем о том, как читать локальный файл XML.

Большинство из них используют openRawResource(). Однако это намного медленнее по сравнению с getXML().

Я хотел использовать getXML для своего проекта, есть способ использовать getXML с XMLReader.parse(), поскольку SAX InputSource не принимает XmlResourceParser в качестве параметра.

Изменить: кстати, когда будет вызываться startElement endElement? Это сразу после XMLReader.parse? Можно ли перезапустить парсинг сверху, когда я прочитаю определенное значение атрибутов?

Большое Вам спасибо


person Yaobin Then    schedule 10.05.2011    source источник


Ответы (2)


Вы можете использовать его (предположим, что вы храните свой xml в папке с ресурсами)

 InputStream response=context.getAssets().open("your.xml");

а потом

  Xml.parse(response, Xml.Encoding.UTF_8,rootElement.getContentHandler());
person Tanmay Mandal    schedule 10.05.2011
comment
По-видимому, я не мог получить доступ к xml, если использовал путь assets/your.xml, но он работает, если это your.xml - person Yaobin Then; 12.05.2011
comment
Спасибо, что показали мне неправильную часть кода. Исправлено. Это была ошибка копирования и вставки. - person Tanmay Mandal; 12.05.2011

Если вы хотите использовать функцию «getXML()», вы можете ознакомиться с этим руководством, в котором показано, как использовать интерфейс «XmlResourceParser»: Ссылка

Другой способ - поместить файлы XML в 'openRawResource'-метод, который возвращает "InputStream" для заданного идентификатора ресурса, который вы затем можете передать обычному "SAXParser".

person Lukas Knuth    schedule 10.05.2011
comment
Я видел много сообщений о том, что openRawResource в 10 раз медленнее, чем getXML, поэтому я поднял этот вопрос. Проверяю предыдущую ссылку, которую вы предоставили :) - person Yaobin Then; 10.05.2011
comment
Я не уверен, есть ли какая-то разница, но вы можете попробовать и посмотреть, какой из них быстрее... - person Lukas Knuth; 10.05.2011