节点带有属性的xml pull解析

本文介绍了一种使用Pull解析器处理XML文件的方法,通过实例演示了如何读取包含用户信息(如姓名、电话号码等)的XML文档,并将其转换为内存中的对象列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?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();
        }
        
        
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值