Как получить значение узла с XmlPullParser

Я пытаюсь получить значения из XML с помощью XmlPullParser, но не могу достичь значений, которые я хочу. XML-структура похожа на Android Strings.xml:

<string name="value"> 1 </string>

Я могу получить "строку", "имя" и "значение" из XML, но не могу достичь фактического значения "1". Кажется, что XmlPullParser работает только для таких структур:

<value> 1 </value>

Нужно ли использовать другой синтаксический анализатор, или есть способ достичь "1" (значение выше) каким-либо образом?

Спасибо!

3 ответа

Решение

Вы проверили документацию XmlPullParser? У него есть пример, как его использовать. По сути, вы можете получить значение внутри тегов, вызвав getText когда парсер достигает правильной позиции при вызове next,

nextText() метод сделает свое дело

Чтобы расширить предыдущие ответы фрагментом кода о том, как на самом деле использовать это.

/* initialization skipped */
eventType = xpp.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT) {
                if(eventType == XmlPullParser.START_DOCUMENT) {
                    Log.d("Task2/Parser","Start document");
                } else if(eventType == XmlPullParser.START_TAG) {
                    Log.d("Task2/Parser", "Start tag "+xpp.getName());
                    if (xpp.getName().equals("temperature")){
                        temperature = Double.parseDouble(xpp.nextText());
                        return temperature;
                    }
                } else if(eventType == XmlPullParser.END_TAG) {
                    Log.d("Task2/Parser", "End tag "+xpp.getName());
                } else if(eventType == XmlPullParser.TEXT) {
                    Log.d("Task2/Parser", "Text "+xpp.getText());
                }
                eventType = xpp.next();
            }

Этот код возвращает значение в теге xml <temperature> как двойной. Очевидно, что это потребовало бы больше обработки ошибок, но просто так, чтобы другие люди, оказавшиеся здесь, могли получить это с меньшим количеством поиска в Google.

Другие вопросы по тегам