【问题标题】:How to get a specific node value in XML Pull Parser如何在 XML Pull Parser 中获取特定节点值
【发布时间】:2015-06-08 05:50:35
【问题描述】:

我正在使用以下代码来解析XML,它已经从官方Android Docs中引用:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();

xpp.setInput(new StringReader(response));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
    if (eventType == XmlPullParser.START_DOCUMENT) {
        System.out.println("Start document");
    } else if (eventType == XmlPullParser.START_TAG) {
        System.out.println("Start tag " + xpp.getName());
    } else if (eventType == XmlPullParser.END_TAG) {
        System.out.println("End tag " + xpp.getName());
    } else if (eventType == XmlPullParser.TEXT) {
    //    System.out.println("Text " + xpp.getText());



    }
    eventType = xpp.next();
}
System.out.println("End document");

在控制台上:

06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ Start document
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ Start tag exareceipts
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ Start tag email
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ End tag email
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ Start tag authentication_status
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ End tag authentication_status
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ End tag exareceipts
06-08 11:13:25.557  24857-24883/ex.com.receipts I/System.out﹕ End document

但是我只对名称为 authentication_status 的节点感兴趣,我知道我需要检查:

if(xpp.getName().equalsIgnoreCase("authentication_status")){
    //logic for getting node value
}

我真的很困惑和不确定 - 将这段代码放在哪里。

【问题讨论】:

  • 请对不赞成票发表评论?
  • ^ ass,这是一个基于 DOM 的问题。

标签: java android xml xmlpullparser android-xmlpullparser


【解决方案1】:

好的,方法如下:

 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                            factory.setNamespaceAware(true);
                            XmlPullParser xpp = factory.newPullParser();

                            String tagName = null;

                            xpp.setInput(new StringReader(response));
                            int eventType = xpp.getEventType();
                            while (eventType != XmlPullParser.END_DOCUMENT) {
                                if (eventType == XmlPullParser.START_DOCUMENT) {
                                    System.out.println("Start document");
                                } else if (eventType == XmlPullParser.START_TAG) {
                                    System.out.println("Start tag " + xpp.getName());
                                    tagName =  xpp.getName();
                                } else if (eventType == XmlPullParser.END_TAG) {
                                    System.out.println("End tag " + xpp.getName());
                                } else if (eventType == XmlPullParser.TEXT) {

                                    if(tagName.equalsIgnoreCase("authentication_status")){
                                        System.out.println("Text tagName " + xpp.getText());
                                    }




                                }
                                eventType = xpp.next();
                            }
                            System.out.println("End document");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多