节点带有属性的xml pull解析

原创 2016年06月01日 21:53:30
<?xml version="1.0" encoding="UTF-8"?>  
<contacts>  
    <user id="1" uname="张三">  
        <phone>010895430987</phone>
        <mobil>1356789034</mobil>  
        <addr>北京市海淀区上地软件园南路57号</addr>
        <email>zhangsan@163.com</email>
        <work>群众演员</work>
    </user>  
    <user id="2" uname="马苏">  
        <phone>010895430966</phone>
        <mobil>139012345678</mobil>  
        <addr>北京市海淀区上地五街</addr>
        <email>masu@263.com</email>
        <work>二级演员</work>
    </user>
    <user id="3" uname="孙俪">  
        <phone>01087889988</phone>
        <mobil>13903456666</mobil>  
        <addr>北京市海淀区上地软件园南路57号</addr>
        <email>sunli@sina.com</email>
        <work>一级演员</work>
    </user>

</contacts>


private void parserPullXml() {
        boolean flag=true;
        
        XmlPullParser parser = Xml.newPullParser();
        try {
            //设置要解析文件的路径
            parser.setInput(getAssets().open("contacts.xml"), "utf-8");
            
            int event = parser.getEventType();//五种事件类型
            
            while(flag){
                    switch (event) {
                    case XmlPullParser.START_DOCUMENT:
                        //开始文档的解析
                        userlist = new ArrayList<>();
                        break;
                        
                    case XmlPullParser.END_DOCUMENT:
                        //结束文档解析
                        flag=false;//让循环结束
                        
                        break;
                        
                    case XmlPullParser.START_TAG:
                        name = parser.getName();
                        if(name.equals("user")){
                            u = new User();
                            u.setId(parser.getAttributeValue(null, "id"));
                            u.setUname(parser.getAttributeValue(null, "uname"));
                        }
                        
                        
                        
                        break;
                    case XmlPullParser.END_TAG:
                        //结束节点解析
                        name=parser.getName();
                        if(name.equals("user")){
                            userlist.add(u);
                        }
                        //清空name  
                        name="";
                        
                        break;
                    case XmlPullParser.TEXT:
                        
                        //文档解析
                        
                        if(name.equals("phone")){
                            u.setPhone(parser.getText());
                        }
                        if(name.equals("mobil")){
                            u.setMobil(parser.getText());
                        }
                        if(name.equals("addr")){
                            u.setAddr(parser.getText());
                        }
                        if(name.equals("email")){
                            u.setEmail(parser.getText());
                        }
                        if(name.equals("work")){
                            u.setWork(parser.getText());
                        }
                        
                        break;
                    }
                    
                    //让其解析下一行  若忘记写则不会接着解析
                    event=parser.next();
            }    
            
            
            
            
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }






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

相关文章推荐

Android PULL解析XML

  • 2017-07-27 13:36
  • 21.28MB
  • 下载

android pull解析xml

上一篇介绍了如何序列化一份xml文件,那接下来必不可少的肯定是解析它了,那现在我们就来解析一下上一篇生成的那份xml文件。如下:对了,方便起见,这份msmInfo.xml文件我把它放到src根目录下序...

Pull解析xml

  • 2016-07-02 18:12
  • 1.47MB
  • 下载

pull解析XML

  • 2015-06-03 20:56
  • 45KB
  • 下载

Android中使用PULL方式解析XML文件

Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是, Pull解析器产生的...
  • cjjky
  • cjjky
  • 2011-08-07 23:24
  • 10922

pull解析xml

  • 2014-07-08 09:50
  • 19.49MB
  • 下载

Andrioid自带pull解析xml顺序截图

今天将XmlPullParser类学习使用了下,将解析步骤放在Log记录中,发现log中如果有存储内容为null会有异常,于是在里面多加了“1”字符串, 发现解析xml要注意连个问题 1.获取23 要...

13pull解析xml天气信息

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

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