关闭

节点带有属性的xml pull解析

54人阅读 评论(0) 收藏 举报
<?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();
        }
        
        
    }






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1963次
    • 积分:142
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档