我试图使用 XmlPullParser 从 XML 中获取值,但无法达到我想要的值。XML 结构类似于 Android Strings.xml:
<string name="value"> 1 </string>
我可以从 XML 中获取“字符串”、“名称”和“值”,但无法达到实际值“1”。似乎 XmlPullParser 仅适用于这样的结构:
<value> 1 </value>
我需要使用另一个解析器还是有办法以某种方式达到“1”(上面的值)?
谢谢!
我试图使用 XmlPullParser 从 XML 中获取值,但无法达到我想要的值。XML 结构类似于 Android Strings.xml:
<string name="value"> 1 </string>
我可以从 XML 中获取“字符串”、“名称”和“值”,但无法达到实际值“1”。似乎 XmlPullParser 仅适用于这样的结构:
<value> 1 </value>
我需要使用另一个解析器还是有办法以某种方式达到“1”(上面的值)?
谢谢!
nextText()
方法可以解决问题
你检查过 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>
作为双精度值返回。显然,它需要更多的错误处理,但只是这样其他人最终可以通过更少的谷歌搜索来获得它。