XML解析---PULL解析

来源:互联网 发布:网络新闻报道的特点 编辑:程序博客网 时间:2024/05/02 00:32

xml之pull解析

 public void pullxml() {        // 得到XmlPullParser        XmlPullParser xmlPullParser = Xml.newPullParser();        try {            // 设置要读取的文件            xmlPullParser.setInput(getAssets().open("student.xml"), "utf-8");            // 得到事件类型            int type = xmlPullParser.getEventType();            //String targetname = null;// 放循环外或是成员变量            while (type != XmlPullParser.END_DOCUMENT) {// 如果文档没有结束                switch (type) {                case XmlPullParser.START_DOCUMENT:// 读的是<?*****?>                    ss = new ArrayList<Student>();                    System.out.println("读取文件开始");                    break;                case XmlPullParser.START_TAG:                    targetname = xmlPullParser.getName();// ****在start_tag中                    System.out.println("读取开始标签" + targetname);                    if ("student".equals(targetname)) {                        s = new Student();                        String value = xmlPullParser.getAttributeValue(0);                        s.setId(Integer.parseInt(value));                    }                    break;                case XmlPullParser.TEXT:                    if(targetname!=null){//少执行几次.3次                        System.out.println("标签内容:" + xmlPullParser.getText());                        if ("name".equals(targetname)) {                            s.setName(xmlPullParser.getText());                        } else if ("age".equals(targetname)) {                            s.setAge(Integer.parseInt(xmlPullParser.getText()));                        }                    }                    break;                case XmlPullParser.END_TAG:                    // 此处重新给targetname赋值,是结束标签                    targetname = xmlPullParser.getName();                    System.out.println("读取结束标签" + targetname);                    if ("student".equals(targetname)) {                        System.out.println(s);                        ss.add(s);                        s = null;                    }                    targetname = null;// 此处targetname是结束标签,所有要置空, 下一次重新赋值                    break;                /*                 * 此项执行不到因为条件是:type!=XmlPullParser.END_DOCUMENT case                 * XmlPullParser.END_DOCUMENT: System.out.println("读取文档结束"+ss);                 * break;                 */                default:                    break;                }                // 记得写 改变循环条件********************************循环内                type = xmlPullParser.next();            }            // 循环完后打印集合            System.out.println("读取文档结束" + ss);        } catch (XmlPullParserException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }

还可以这样获取text,在开始标签中判断

case XmlPullParser.START_TAG:                    name = pullParser.getName();                    //针对不同的字段,记得还要在结束标签中判断;                    if ("news".equals(name)||"blog".equals(name)) {                        n = new News();                    } else if ("title".equals(name)) {                  //pullParser.nextText()获取text                        n.setTitle(pullParser.nextText());                    } else if ("body".equals(name)) {                        n.setBody(pullParser.nextText());                    } else if ("commentCount".equals(name)) {                        n.setCommentCount(pullParser.nextText());                    } else if ("author".equals(name)||"authorname".equals(name)) {                        n.setAuthor(pullParser.nextText());                    } else if ("pubDate".equals(name)) {                        n.setPubDate(pullParser.nextText());                    }                    break;
0 0