pull方法解析Xml文档

原创 2016年05月31日 16:38:51
package com.bawei.pullparsexmldemo;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;

import com.bawei.bean.User;

public class MainActivity extends Activity {
    
    private List<User> userlist;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        pullParseXml();
        
        Log.d("user", userlist.toString());
    }

    private void pullParseXml() {
        
        //1.通过Xml的newPullParser方法获取一个对象XmlPullParser
        XmlPullParser parser = Xml.newPullParser();
        try {
            //2.设置要解析的文件
            parser.setInput(getAssets().open("contacts.xml"), "utf-8");
            
            boolean isNOTEOF = true;//没有到文件结尾
            
            String tagname = "";//记录节点名称
                
                
            //3.开始解析文档--返回值是五种事件类型
            int event = parser.getEventType();
            
            User u = null;
            //6.想办法把解析文档的代码循环起来
            while(isNOTEOF){
                //4.判断解析文档事件源属于哪一种事件类型
                switch (event) {
                    case XmlPullParser.START_DOCUMENT://文档开始
                        //初始化动作
                        userlist = new ArrayList<User>();
                        break;
                    case XmlPullParser.START_TAG://节点开始
                        //获取节点名称
                        tagname = parser.getName();
                        if(tagname.equals("user")){
                            u = new User();
                            u.setId(parser.getAttributeValue(null, "id"));
                            u.setUname(parser.getAttributeValue(null, "uname"));
                        }
                        
                        break;
                    case XmlPullParser.TEXT://文本内容
                        if(tagname.equals("phone")){
                            //取电话-文本内容
                            u.setPhone(parser.getText());
                        }else if(tagname.equals("mobil")){
                            u.setMobil(parser.getText());
                        }else if(tagname.equals("addr")){
                            u.setAddr(parser.getText());
                        }else if(tagname.equals("email")){
                            u.setEmail(parser.getText());
                        }
                        
                        break;
                        
                    case XmlPullParser.END_TAG://节点结束
                        tagname = parser.getName();
                        if(tagname.equals("user")){
                            userlist.add(u);
                        }
                        //在节点结束时,重新初始化节点名称(以防空节点内容覆盖正常节点文本内容)
                        tagname = "";
                        break;
        
                    case XmlPullParser.END_DOCUMENT://文档结束
                        //循环结束的标识,很关键,否则死循环
                        isNOTEOF = false;
                        break;
                }
                //5.接着解析下一行(一定不能忘记,否则程序不会往下执行)
                event = parser.next();
            }
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}



以下是此xml文件


<root>

<resultcode>200</resultcode>

<reason>success</reason>

<result>

<item><id>242</id><catalog>中国文学</catalog></item><item><id>252</id><catalog>人物传记</catalog></item><item><id>244</id><catalog>儿童文学</catalog></item><item><id>248</id><catalog>历史</catalog></item><item><id>257</id><catalog>哲学</catalog></item><item><id>243</id><catalog>外国文学</catalog></item><item><id>247</id><catalog>小说</catalog></item><item><id>251</id><catalog>心灵鸡汤</catalog></item><item><id>253</id><catalog>心理学</catalog></item><item><id>250</id><catalog>成功励志</catalog></item><item><id>249</id><catalog>教育</catalog></item><item><id>245</id><catalog>散文</catalog></item><item><id>256</id><catalog>理财</catalog></item><item><id>254</id><catalog>管理</catalog></item><item><id>246</id><catalog>经典名著</catalog></item><item><id>255</id><catalog>经济</catalog></item><item><id>258</id><catalog>计算机</catalog></item>

</result>

<error_code>0</error_code>

</root>









版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

分别利用利用SAX、DOM、PULL三种方法解析XML文档

分别利用利用SAX、DOM、PULL三种方法解析XML文档
  • qtone
  • qtone
  • 2011-07-05 14:49
  • 167

Android SAX,DOM,PULL解析XML文档

一,写XML XiaoYang 19 XiaoZhang 28 XiaoZhao 38 二,编写对应XML的bean类 package sn...

使用pull解析、生成XML文档

zhang 21 liu 22 public class XmlManager { /** * 使用pull解析XML */ public sta...

Android数据存储——2.文件存储_E_Pull解析XML文档

今天学习Android数据存储——文件存储_Pull解析XML文档      如果在一个XML文档中我们只需要前面一部分数据,但是使用SAX方式或DOM方式会对整个文档进行解析,尽管XML文档中...

Android中PULL解析XML文档【Android学习笔记】

以下我在安卓中一个简单的使用PULL解析XML文档的例子,PULL解析文档xiangbi

Pull 解析/生成 XML文档

Android内置的XML解析器,运行方式与SAX类似,提供了如开始元素和结束元素等事件。 使用parser.next()可进入下一个元素并触发相应事件,可使用一个switch对感兴趣的事件进行选择...

Pull解析完成XML文档的输出

在AndroidManifest.xml中配置权限:       package="com.li.xmlpull"     android:versionCode="1"  &...

xml文档的pull解析与SAX解析

一、Pull解析: 1.在java中的使用方法:                     ...

Android 利用PULL生成XML文档

//目录结构 //StudentBean.java package sn.len.domain; public class StudentBean { private Strin...

关于XML文档的解析方法

  • 2009-08-27 20:34
  • 92KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)