zoukankan      html  css  js  c++  java
  • Xml解析之PULL解析 例1

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <persons>
     3   <person id="1">   
     4     <name>zhangsan</name>
     5     <age>22</age>
     6     <sex>boy</sex>
     7   </person>
     8   <person id="2">
     9     <name>李四</name>
    10     <age>20</age>
    11     <sex></sex>
    12   </person>
    13 </persons>

    解析以上person.xml

    PULL解析:基于事件拉取
        5个属性:每一个事件对应一个常量
            START_DOCUMENT:开始文档 常量值 0
            START_TAG:开始标签  2
            TEXT:  文本  常量值 4
            END_TAG: 结束标签 3
            END_DOCUMENT: 结束文档 1
        非常重要的方法:
            next():检索下一个事件
      例1. 创建了Person类。
    
    
      1 import java.io.FileInputStream;
      2 import java.io.IOException;
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import org.xmlpull.v1.XmlPullParser;
      7 import org.xmlpull.v1.XmlPullParserException;
      8 import org.xmlpull.v1.XmlPullParserFactory;
      9 
     10 public class Demo3 {
     11 
     12     public static void main(String[] args) throws XmlPullParserException,
     13             IOException {
     14         // 1、获取pull解析器的对象工厂
     15         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
     16         // 2、从工厂对象中获取解析器
     17         XmlPullParser parser = factory.newPullParser();
     18         // 3、设置解析文档
     19         parser.setInput(new FileInputStream("src/person.xml"), "utf-8");
     20         // 4、开始解析
     21         List<Person> list = null;
     22         Person p = null;
     23         // 获取事件类型
     24         int type = parser.getEventType();
     25         while (type != XmlPullParser.END_DOCUMENT) {
     26             String tagName = parser.getName();
     27             switch (type) {
     28             case XmlPullParser.START_TAG:
     29                 if ("persons".equals(tagName)) {
     30                     // 如果开始标记是persons,应该创建集合
     31                     list = new ArrayList<Person>();
     32                 } else if ("person".equals(tagName)) {
     33                     // 如果开始标记是person,应该创建person对象
     34                     p = new Person();
     35                     if (parser.getAttributeCount() > 0) {
     36                         // 获取属性id的值,赋值给person对象的id属性
     37                         p.setId(parser.getAttributeValue(0));// 第一个属性
     38                     }
     39                 } else if ("name".equals(tagName)) {
     40                     p.setName(parser.nextText());
     41                 } else if ("age".equals(tagName)) {
     42                     p.setAge(Integer.parseInt(parser.nextText()));
     43                 } else if ("sex".equals(tagName)) {
     44                     p.setSex(parser.nextText());
     45                 }
     46                 break;
     47             case XmlPullParser.END_TAG:
     48                 if ("person".equals(tagName)) {
     49                     // </person> 将Person放入list集合
     50                     list.add(p);
     51                 }
     52                 break;
     53             }
     54             // 很重要的步骤:获取下次事件类型
     55             type = parser.next();
     56         }
     57         // 打印list
     58         for (Person per : list) {
     59             System.out.println(per);
     60         }
     61     }
     62 
     63     static class Person {
     64         private String id;
     65         private String name;
     66         private int age;
     67         private String sex;
     68 
     69         public Person() {
     70             super();
     71         }
     72 
     73         public Person(String id, String name, int age, String sex) {
     74             super();
     75             this.id = id;
     76             this.name = name;
     77             this.age = age;
     78             this.sex = sex;
     79         }
     80 
     81         public String getId() {
     82             return id;
     83         }
     84 
     85         public void setId(String str) {
     86             this.id = str;
     87         }
     88 
     89         public String getName() {
     90             return name;
     91         }
     92 
     93         public void setName(String name) {
     94             this.name = name;
     95         }
     96 
     97         public int getAge() {
     98             return age;
     99         }
    100 
    101         public void setAge(int age) {
    102             this.age = age;
    103         }
    104 
    105         public String getSex() {
    106             return sex;
    107         }
    108 
    109         public void setSex(String sex) {
    110             this.sex = sex;
    111         }
    112 
    113         @Override
    114         public String toString() {
    115             return "Person [id=" + id + ", name=" + name + ", age=" + age
    116                     + ", sex=" + sex + "]";
    117         }
    118 
    119     }
    120 }
    
    
    
     


  • 相关阅读:
    UE4项目《和平精英》渲染技术浅析
    如何用CMake构建Android C++库
    Unity Native Plugin
    多边形三角化
    参考图
    Unity SRP学习笔记
    Macbook Pro HDMI 无信号解决办法
    CGAL计算几何算法库
    无标记动作捕捉
    PS 鼠绘
  • 原文地址:https://www.cnblogs.com/touchmore/p/4992960.html
Copyright © 2011-2022 走看看