я не могу заставить getPrefix () или getNamespacePrefix () работать на Android - PullRequest
0 голосов
/ 10 марта 2011

У меня проблема с моим кодом в XmlPullParser, и я не знаю, является ли это только мной или ошибкой.

Я просто анализирую XML-файл с помощью xmlpullparser (как показано ниже):

   XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory.setNamespaceAware(true);

         XmlPullParser xpp = factory.newPullParser();
         xpp = c.getResources().getXml(id);
         int quantity = 0;
         int eventType = xpp.getEventType();
         while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {
                  Log.d("al","Start tag "+xpp.getPrefix());
            }
            xpp.next();
        }

и программа не работает, она говорит RuntimeException, getPrefix не поддерживается.я ничего не нашел об этом.я делаю что-то не так?

(я использую api 7 и сайт anddev говорит, что он здесь, так как api 1)

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

Проблема была

xpp = c.getResources().getXml(id);

как сказал Робби, getPrefix () не был реализован

вместо этого я делаю:

XmlPullParser xpp = factory.newPullParser();
InputStreamReader isr = new InputStreamReader(c.getResources().openRawResource(id));
xpp.setInput(isr);

Может ли это быть потому, что моя фабрика осведомлена о Nampespace, а getResources (). GetXml () возвращает XmlRessourceParser, который не заботится о пространстве имен?

0 голосов
/ 10 марта 2011

XmlPullParser - это интерфейс, поэтому вы должны получить реализацию по умолчанию XmlPullParser, и метод этой реализации getPrefix() выдает исключение, потому что getPrefix() не реализован.

...