Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中解析XML数据_Android_Xml_Xml Parsing_Android Xmlpullparser - Fatal编程技术网

在android中解析XML数据

在android中解析XML数据,android,xml,xml-parsing,android-xmlpullparser,Android,Xml,Xml Parsing,Android Xmlpullparser,我尝试使用XMLPullParser在android中解析XML数据,但无法解析它 以下是我的XML数据的某些部分。任何人都可以帮我解析这个XML 任何帮助都将不胜感激 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <live xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <tt1> <acti

我尝试使用
XMLPullParser
在android中解析XML数据,但无法解析它

以下是我的XML数据的某些部分。任何人都可以帮我解析这个XML

任何帮助都将不胜感激

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<live
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tt1>
        <active_flag>A</active_flag>
        <apt/>
        <attachments>false</attachments>
        <avail_for_dispatch_time>0</avail_for_dispatch_time>
        <calltaker_id/>
        <call_checks>0</call_checks>
        <call_number>20</call_number>
        <city/>
        <common_name/>
        <community/>
        <cr1_direction/>
        <cr1_suffix>AV</cr1_suffix>
        <cr2_direction>S</cr2_direction>
        <cr2_suffix>AV</cr2_suffix>
        <cr_st_1>SYMONDS</cr_st_1>
        <cr_st_2>ORLANDO</cr_st_2>
        <ct_position/>
        <department>FD</department>
        <direction>N</direction>
        <dispatch>false</dispatch>
        <dispatcher_id>INFOTECH03</dispatcher_id>
        <display_code>FD</display_code>
        <disposition/>
        <disp_area/>
        <disp_date>2014-04-02</disp_date>
        <disp_time>48536</disp_time>
        <disp_to/>
        <event_number>2014001037</event_number>
        <event_type>DEMO</event_type>
        <exact_number>200</exact_number>
        <final_dispos_code>Report</final_dispos_code>
        <first_disp_date>2014-04-02</first_disp_date>
        <first_disp_time>48574</first_disp_time>
        <first_unit_id/>
        <f_arr_date>2014-04-02</f_arr_date>
        <f_arr_time>49635</f_arr_time>
        <f_enr_date>2014-04-02</f_enr_date>
        <f_enr_time>49635</f_enr_time>
        <hold_alert_counter>0</hold_alert_counter>
        <jurisdiction>WP</jurisdiction>
        <level2>6103</level2>
        <level3/>
        <level4/>
        <level5>WINTER PARK</level5>
        <lupdt_date>2014-08-19</lupdt_date>
        <lupdt_time>47303</lupdt_time>
        <lupdt_user>1023</lupdt_user>
        <lupdt_workstation_id>JWPC</lupdt_workstation_id>
        <l_clr_date>2014-08-13</l_clr_date>
        <l_clr_time>40233</l_clr_time>
        <next_check_time>99999999</next_check_time>
     </tt1>
</live>

标记
tt1
没有值。标签的名称是
tt1

考虑下面的问题

<active_flag>A</active_flag>
我只展示了如何从特定标记中获取值。这个示例应该足以自己解析其余部分。解析

public class XMLPullParserHandler {

    private String text;

    public XMLPullParserHandler() {

    }
    public Void parse(InputStream is) {
        XmlPullParserFactory factory = null;
        XmlPullParser parser = null;
        try {
            factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            parser = factory.newPullParser();

            parser.setInput(is, null);
            boolean check =false;

           //factory instantiates an object

            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                 String tagname = parser.getName();
                switch (eventType) {
                case XmlPullParser.START_TAG:
                    break;

                case XmlPullParser.TEXT:
                    text = parser.getText();
                    break;

                case XmlPullParser.END_TAG:
                          String val = null; 

                          if (tagname.equalsIgnoreCase("active_flag")) { 

                             Log.i("Flag is",text);

                            }
                          if (tagname.equalsIgnoreCase("cr_st_1")) { 

                                 Log.i("cr_st_1 is",text);

                             }
                          if (tagname.equalsIgnoreCase("cr_st_2")) { 

                             Log.i("cr_st_2 is",text);

                          }                     

                    break;

                default:
                    break;
                }
                eventType = parser.next();
            }

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
}
这是日志

08-20 12:53:09.155: I/Flag is(11804): A
08-20 12:53:09.160: I/cr_st_1 is(11804): SYMONDS
08-20 12:53:09.160: I/cr_st_2 is(11804): ORLANDO
我希望您可以基于上面的示例解析其余的值

更多信息请访问

编辑:

按照你的方式进行分析

public class ParserParsing {
    private static final String ns = null;
    private Context mContext;

public Void parse(InputStream in,Context context)
{ 
    mContext = context;      
    try {
        XmlPullParser parser = Xml.newPullParser();
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
        parser.setInput(in, null);
        parser.nextTag();
        readFeed(parser);

    } catch(Exception e){
            e.printStackTrace();
    }
     return null;
}
private  Void readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {

parser.require(XmlPullParser.START_TAG, ns, "live");
    while (parser.next() != XmlPullParser.END_TAG) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();
        if (name.equals("tt1")) {
            readTt1(parser);
        } else {
            skip(parser);
        }
    }  
    return null;
}
private Void readTt1(XmlPullParser parser) throws XmlPullParserException, IOException {
    parser.require(XmlPullParser.START_TAG, ns, "tt1");
    while (parser.next() != XmlPullParser.END_TAG) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();

        if (name.equals("active_flag")) {
            String flag =readflag(parser);
            Toast.makeText(mContext, flag, Toast.LENGTH_LONG).show();
        } else {
            skip(parser);
        }
    } 
    return null;
}
private String readflag(XmlPullParser parser) throws IOException, XmlPullParserException {
    parser.require(XmlPullParser.START_TAG, ns, "active_flag");
    String flag =  readText(parser);

    parser.require(XmlPullParser.END_TAG, ns, "active_flag");
    return flag;
}
     private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
            String result = "";
            if (parser.next() == XmlPullParser.TEXT) {
                result = parser.getText();
                parser.nextTag();
            }
            return result;
        }
        private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                throw new IllegalStateException();
            }
            int depth = 1;
            while (depth != 0) {
                switch (parser.next()) {
                case XmlPullParser.END_TAG:
                    depth--;
                    break;
                case XmlPullParser.START_TAG:
                    depth++;
                    break;
                }
            }
         }    
}

发布解析代码。你想要什么标记值?@Raghunandan-我已经编辑了我的代码。请帮助
parser.require(XmlPullParser.START\u tag,ns,“string”)
是错误的,你没有名为string的标记。tt1没有value@Raghunandan-抱歉,它不是“字符串”,而是“活动”标签。我又编辑了一次
08-20 12:53:09.155: I/Flag is(11804): A
08-20 12:53:09.160: I/cr_st_1 is(11804): SYMONDS
08-20 12:53:09.160: I/cr_st_2 is(11804): ORLANDO
public class ParserParsing {
    private static final String ns = null;
    private Context mContext;

public Void parse(InputStream in,Context context)
{ 
    mContext = context;      
    try {
        XmlPullParser parser = Xml.newPullParser();
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
        parser.setInput(in, null);
        parser.nextTag();
        readFeed(parser);

    } catch(Exception e){
            e.printStackTrace();
    }
     return null;
}
private  Void readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {

parser.require(XmlPullParser.START_TAG, ns, "live");
    while (parser.next() != XmlPullParser.END_TAG) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();
        if (name.equals("tt1")) {
            readTt1(parser);
        } else {
            skip(parser);
        }
    }  
    return null;
}
private Void readTt1(XmlPullParser parser) throws XmlPullParserException, IOException {
    parser.require(XmlPullParser.START_TAG, ns, "tt1");
    while (parser.next() != XmlPullParser.END_TAG) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();

        if (name.equals("active_flag")) {
            String flag =readflag(parser);
            Toast.makeText(mContext, flag, Toast.LENGTH_LONG).show();
        } else {
            skip(parser);
        }
    } 
    return null;
}
private String readflag(XmlPullParser parser) throws IOException, XmlPullParserException {
    parser.require(XmlPullParser.START_TAG, ns, "active_flag");
    String flag =  readText(parser);

    parser.require(XmlPullParser.END_TAG, ns, "active_flag");
    return flag;
}
     private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
            String result = "";
            if (parser.next() == XmlPullParser.TEXT) {
                result = parser.getText();
                parser.nextTag();
            }
            return result;
        }
        private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                throw new IllegalStateException();
            }
            int depth = 1;
            while (depth != 0) {
                switch (parser.next()) {
                case XmlPullParser.END_TAG:
                    depth--;
                    break;
                case XmlPullParser.START_TAG:
                    depth++;
                    break;
                }
            }
         }    
}