4

我试图使用 XmlPullParser 从 XML 中获取值,但无法达到我想要的值。XML 结构类似于 Android Strings.xml:

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

我可以从 XML 中获取“字符串”、“名称”和“值”,但无法达到实际值“1”。似乎 XmlPullParser 仅适用于这样的结构:

<value> 1 </value>

我需要使用另一个解析器还是有办法以某种方式达到“1”(上面的值)?

谢谢!

4

3 回答 3

12

nextText()方法可以解决问题

于 2011-11-01T20:10:14.393 回答
5

你检查过 XmlPullParser的文档吗?它有一个如何使用它的例子。基本上,您可以通过在您调用getText时解析器到达正确位置时调用来获取标签内的值next

于 2011-09-28T08:58:43.737 回答
0

使用如何实际使用它的代码片段来扩展先前的答案。

/* 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>作为双精度值返回。显然,它需要更多的错误处理,但只是这样其他人最终可以通过更少的谷歌搜索来获得它。

于 2017-10-18T11:51:16.453 回答