用pull解析XML

来源:互联网 发布:浙江省进出口贸易数据 编辑:程序博客网 时间:2024/06/08 00:15
try {
            // 获取factory
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            // 获取 parser
            XmlPullParser parser = factory.newPullParser();

            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
                    xml.getBytes());
            // 设置流
            parser.setInput(byteArrayInputStream, "UTF-8");

            int type_pull = parser.getEventType();

            while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {

                switch (type_pull) {

                case XmlPullParser.START_DOCUMENT:// 开始接收文件(走一次)
                    nList = new ArrayList<News>();

                    break;
                case XmlPullParser.START_TAG:// 开始解析元素
                    if ("news".equals(parser.getName())) {
                        // 得到对象呀
                        books = new News();

                    }

                    if (books != null) {

                        if ("id".equals(parser.getName())) {

                            books.id = parser.nextText();

                        } else if ("title".equals(parser.getName())) {

                            books.title = parser.nextText();

                        } else if ("body".equals(parser.getName())) {

                            books.body = parser.nextText();
                        } else if ("commentCount".equals(parser.getName())) {

                            books.commentCount = parser.nextText();
                        } else if ("author".equals(parser.getName())) {

                            books.author = parser.nextText();
                        } else if ("authorid".equals(parser.getName())) {

                            books.authorid = parser.nextText();
                        } else if ("pubDate".equals(parser.getName())) {

                            books.pubDate = parser.nextText();
                        } else if ("newstype".equals(parser.getName())) {

                            if ("type".equals(parser.getName())) {

                                books.newstype.type = parser.nextText();
                            } else if ("authoruid2".equals(parser.getName())) {

                                books.newstype.authoruid2 = parser.nextText();
                            }

                        }

                    }

                    break;
                case XmlPullParser.END_TAG:// 结束解析元素

                    // 判断是不是 Book
                    if ("news".equals(parser.getName())) {
                        nList.add(books);
                    }

                    break;
                case XmlPullParser.END_DOCUMENT:// 结束接收文件

                    break;

                default:
                    break;
                }

                type_pull = parser.next();
            }

        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
0 0