XML解析(pull)

//需要解析的最简单的xml文件,放在assets目录下面

<persons>  
             
    <person id="23">
       
         <name>
            
             lee 
            
             </name>   
        <age>
            30
           
            </age>
       
    </person>
   
   
   
   
    <person id="20">
       
        <name>leo</name>
       
        <age>24</age>
       
    </person>
   
   
</persons>


//Bean里面的属性

private String id;
 private String name;
 private String age;


//Activity页面,开始解析

public class MainActivity extends Activity {

 List<Bean>list=new ArrayList<Bean>();
 private String tagName;
 private Bean bean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        try {
         //得到输入流
   InputStream inputStream = getAssets().open("data.xml");
   //得到XML解析器
   XmlPullParser pullParser = Xml.newPullParser();
   //设置需要解析的输入流和编码格式
   pullParser.setInput(inputStream, "utf-8");
   //得到事件类型
   int eventType = pullParser.getEventType();
   //只要文档没有结束,就一直读取
   while(eventType!=pullParser.END_DOCUMENT){
    switch (eventType) {
    case XmlPullParser.START_DOCUMENT:
     System.out.println("开始读文档");
     
     break;
     
    case XmlPullParser.START_TAG:
     tagName = pullParser.getName();
     if("person".equals(tagName)){
      bean = new Bean();
      //通过角标获取属性值
      String id = pullParser.getAttributeValue(0).trim();
      bean.setId(id);
      
      
     }else if("name".equals(tagName)){ //读到name开始标签
      //得到标签里的文本
      String nameText = pullParser.nextText().trim();
      bean.setName(nameText);
     }else if("age".equals(tagName)){
      //得到标签里的文本
      String ageText = pullParser.nextText();
      bean.setAge(ageText);
     }
     break;
    
     //读到了结束标签:
    case XmlPullParser.END_TAG:
     //得到结束标签的名字
     tagName= pullParser.getName();
     //结束标签是person,代表着一条person数据以及读完并封装
     if("person".equals(tagName)){
      System.out.println(bean.toString());
      //添加到bean集合
      list.add(bean);
     }
     break;
     
    case XmlPullParser.END_DOCUMENT:
     System.out.println("文档结束");
     break;
     
    }
    //得到下一个节点的类型
    eventType=pullParser.next();
   }
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (XmlPullParserException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
       
       
    }


   
}









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值