如何使用XmlPullParser获取节点值

时间:2011-09-28 08:39:02

标签: android xmlpullparser

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

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

我可以获得“string”,“name”&amp;来自XML的“值”但不能达到实际值“1”。似乎XmlPullParser仅适用于这样的结构:

<value> 1 </value>

我是否需要使用其他解析器,或者是否有办法以某种方式达到“1”(上面的值)?

谢谢!

3 个答案:

答案 0 :(得分:12)

nextText()方法可以解决问题

答案 1 :(得分:5)

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

答案 2 :(得分: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>中的值作为double返回。显然,它需要更多的错误处理,但正如其他人在这里结束可以用较少的谷歌搜索来获得它。