Как разобрать XML из ресурсов проекта Android - PullRequest
4 голосов
/ 15 марта 2012

У меня есть файл XML (config.xml) в папке res / xml, и мне нужно проанализировать этот XML.Для этого я использую SAXParser.Я пытаюсь таким образом:

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
          //handler definition...
};
Uri configUri = Uri.parse("android.resource://myPackageName/" + R.xml.config);
saxParser.parse(configXML.toString(), handler);

Но это не работает ...

Метод синтаксического анализа имеет следующие параметры:

uriрасположение содержимого для анализа.

dh Используемый SAXDefaultHandler.

Должен ли я использовать URI или Uri?В чем разница?

1 Ответ

6 голосов
/ 15 марта 2012

У меня есть файл XML (config.xml) в папке res / xml, и мне нужно проанализировать этот XML

Звоните getResources().getXml(R.xml.config). Вам будет вручено XmlResourceParser, которое соответствует API XmlPullParser. Как показано в XmlPullParser JavaDocs , вы получите такой код:

     XmlResourceParser xpp=getResources().getXml(R.xml.config);
     int eventType = xpp.getEventType();

     while (eventType != XmlPullParser.END_DOCUMENT) {
       if (eventType == XmlPullParser.START_DOCUMENT) {
           // do something
       } else if (eventType == XmlPullParser.START_TAG) {
           // do something
       } else if (eventType == XmlPullParser.END_TAG) {
           // do something
       } else if (eventType == XmlPullParser.TEXT) {
           // do something
       }
      eventType = xpp.next();
     }

Для этого я использую SAXParser

Даже если вы можете заставить это работать, это будет в ~ 10 раз медленнее, чем использование XmlResourceParser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...