XmlPullParser 解析XMl文件

来源:互联网 发布:淘宝关键词数量 编辑:程序博客网 时间:2024/06/01 17:25
//Book类,XML文件节点对应的实体类package com.zjl.xml;public class Book {    private String name;    private String author;    private String publish;    private String date;    public Book(String name, String author, String publish, String date){        this.name = name;        this.author = author;        this.publish = publish;        this.date = date;    }    public Book(){            }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public String getPublish() {        return publish;    }    public void setPublish(String publish) {        this.publish = publish;    }    public String getDate() {        return date;    }    public void setDate(String date) {        this.date = date;    }    public String toString(){        return "["+this.name+","+this.author+","+this.publish+","+this.date+"]";    }    }
package com.zjl.xml;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;public class XmlDemo {public static void main(String[] args) throws XmlPullParserException, IOException {//获取工厂类XmlPullParserFactory factory = XmlPullParserFactory.newInstance();factory.setNamespaceAware(true);//获取一个PullParser实例XmlPullParser parser = factory.newPullParser();//获取xml 文件 输入流InputStream in = new FileInputStream("src/test.xml");//设置输入流 , 编码方式parser.setInput(in, "UTF-8");//获取解析的事件类型int eventType = parser.getEventType();//获取Book类的集合 用来存储解析出来的数据List<Book> bookList = new ArrayList<Book>();Book bk = null;//没到达文档结束,就一直循环while(eventType != parser.END_DOCUMENT){//标签开始if(eventType == parser.START_TAG){//判断标签名if("book".equals(parser.getName())){bk = new Book();//获取标签属性个数int count = parser.getAttributeCount();for(int i=0; i<count; i++){if(parser.getAttributeName(i).equals("publish"))//获取标签的属性值并存入Book对象中bk.setPublish(parser.getAttributeValue(i));if(parser.getAttributeName(i).equals("date"))bk.setDate(parser.getAttributeValue(i));}}else if("name".equals(parser.getName())){bk.setName(parser.nextText());}else if("author".equals(parser.getName()))bk.setAuthor(parser.nextText());}else if(eventType == parser.END_TAG){//标签结束,将Book对象添加进 集合 中if("book".equals(parser.getName())){bookList.add(bk);}}//读取下一个事件eventType = parser.next();}//输出从XML文件中读取出来的内容for(Book temp : bookList){System.out.println(temp.toString());}}}