Как получить значение узла с XmlPullParser
Я пытаюсь получить значения из XML с помощью XmlPullParser, но не могу достичь значений, которые я хочу. XML-структура похожа на Android Strings.xml:
<string name="value"> 1 </string>
Я могу получить "строку", "имя" и "значение" из XML, но не могу достичь фактического значения "1". Кажется, что XmlPullParser работает только для таких структур:
<value> 1 </value>
Нужно ли использовать другой синтаксический анализатор, или есть способ достичь "1" (значение выше) каким-либо образом?
Спасибо!
3 ответа
Вы проверили документацию XmlPullParser? У него есть пример, как его использовать. По сути, вы можете получить значение внутри тегов, вызвав getText
когда парсер достигает правильной позиции при вызове next
,
Чтобы расширить предыдущие ответы фрагментом кода о том, как на самом деле использовать это.
/* 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.