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         }
原文地址:https://www.cnblogs.com/solar-sys/p/5962852.html