zoukankan      html  css  js  c++  java
  • pullparse解析基础(1)

    一:assert中的xml文件

    1 <?xml version="1.0" encoding="gbk"?>
    2 <smartresult>
    3   <product type="mobile">
    4     <phonenum>13512345678</phonenum>
    5     <location>北京移动神州行卡</location>
    6     <phoneJx>有得有失,华而不实,须防劫财,始保平安 吉带凶</phoneJx>
    7   </product>
    8 </smartresult>

    二:domain中放入javabean数据

     1 public class Product {
     2     private String type;
     3     private String phonenum;
     4     private String location;
     5     private String phoneJx;
     6     public String getType() {
     7         return type;
     8     }
     9     public void setType(String type) {
    10         this.type = type;
    11     }
    12     public String getPhonenum() {
    13         return phonenum;
    14     }
    15     public void setPhonenum(String phonenum) {
    16         this.phonenum = phonenum;
    17     }
    18     public String getLocation() {
    19         return location;
    20     }
    21     public void setLocation(String location) {
    22         this.location = location;
    23     }
    24     public String getPhoneJx() {
    25         return phoneJx;
    26     }
    27     public void setPhoneJx(String phoneJx) {
    28         this.phoneJx = phoneJx;
    29     }
    30     @Override
    31     public String toString() {
    32         return "Product [type=" + type + ", phonenum=" + phonenum
    33                 + ", location=" + location + ", phoneJx=" + phoneJx + "]";
    34     }
    35     
    36 }

    三:解析

     1 //拿到pull解析器
     2         XmlPullParser pullParser = Xml.newPullParser();
     3         try {
     4             //传入xml目标源文件
     5             //inputStream,需要一个流,第二个参数inputEncoding编码和xml文件中编码一致
     6             InputStream in = getAssets().open("result.xml");
     7             pullParser.setInput(in, "gbk");
     8             //拿到事件类型
     9             int eventType = pullParser.getEventType();
    10             //通过循环判断事件类型
    11             //pullParser.END_DOCUMENT:The static field XmlPullParser.END_DOCUMENT should be accessed in a static way
    12             Product p=null;
    13             while(eventType!=XmlPullParser.END_DOCUMENT){
    14                 if(eventType==XmlPullParser.START_TAG){
    15                     //判断是否是元素的开始 , 只要是某个元素的开始位置, 那么就会进入这里 ,不考虑结束标签和结束文档
    16                     //获得 当前解析到的元素的名称
    17                     if("product".equals(pullParser.getName())){
    18                         //准备 product 类的一个实例 , 去 封装数据
    19                         p = new Product();
    20                         //获得第一个属性的值getAttributeValue();
    21                         //通过索引号的方式,索引从0 开始
    22                         String value = pullParser.getAttributeValue(0);
    23                         //设置给p的类型
    24                         p.setType(value);
    25                     }else if("phonenum".equals(pullParser.getName())){
    26                         // <phonenum>13512345678</phonenum>
    27                         //pullParser.nextText直接获得标签后的文本
    28                         String phonenum = pullParser.nextText();
    29                         p.setPhonenum(phonenum);
    30                     }else if("location".equals(pullParser.getName())){
    31                         String location = pullParser.nextText();
    32                         p.setLocation(location);
    33                     }else if("phoneJx".equals(pullParser.getName())){
    34                         String phoneJx = pullParser.nextText();
    35                         pullParser.getText();
    36                         p.setPhoneJx(phoneJx);
    37                     }
    38                 }
    39                 
    40                 //手动移动“指针”
    41                 eventType = pullParser.next();
    42                 
    43             }
    44             
    45             if(p!=null){
    46                 System.out.println(p.toString());
    47             }
    48             
    49         } catch (Exception e) {
    50             // TODO Auto-generated catch block
    51             e.printStackTrace();
    52         }
  • 相关阅读:
    colemak,你用了吗?
    DELPHI一个对付内存汇漏的办法和技巧
    使用for in 循环数据集
    今天差点被断电搞死了,幸好IDE的备份救了我
    为什么继续选择DELPHI?
    无缘DELPHI的BUG
    DELPHI DOUBLE不解之迷
    失败的大牛事件委托,与我的委托
    2017-02-08 01:19:09 Scrapy: pk5_mylist
    2016-09-02 16:50:15 webqq 协议分析
  • 原文地址:https://www.cnblogs.com/solar-sys/p/5962852.html
Copyright © 2011-2022 走看看