Как получить значение узла с XmlPullParser - PullRequest
4 голосов
/ 28 сентября 2011

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

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

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

<value> 1 </value>

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

Спасибо!

Ответы [ 3 ]

12 голосов
/ 02 ноября 2011

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

5 голосов
/ 28 сентября 2011

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

0 голосов
/ 18 октября 2017

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

/* 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> в виде двойного числа.Очевидно, что для этого потребуется больше обработки ошибок, но другие люди, оказавшиеся здесь, могут получить его с меньшими поисками.

...