zoukankan      html  css  js  c++  java
  • java 解析xml文档---通过XmlPullParser解析方式

     1 package com.zx;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.IOException;
     5 import java.util.ArrayList;
     6 import java.util.List;
     7 
     8 import org.json.JSONException;
     9 import org.xmlpull.v1.XmlPullParser;
    10 import org.xmlpull.v1.XmlPullParserException;
    11 import org.xmlpull.v1.XmlPullParserFactory;
    12 
    13 
    14 
    15 class MyDay17Xml {
    16     
    17     public static void main(String []args) throws JSONException{
    18         
    19     }
    20     
    21     public static List<Person> PullParserXml() throws XmlPullParserException, IOException {
    22         //数据定义
    23         List<Person> list=null;
    24         Person person=null;
    25         //获得xmlpullparser对象
    26         XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
    27         XmlPullParser parser=factory.newPullParser();
    28         //获取输入流
    29         FileInputStream fis=new FileInputStream("person.xml");
    30         //设置流和字符集
    31         parser.setInput(fis,"utf-8");
    32         //开始解析
    33         int event=parser.getEventType();
    34         while(event!=XmlPullParser.END_DOCUMENT){
    35             switch (event){
    36             /**
    37              * 开始标记,通常进行相关集合或者对象的初始化
    38              
    39              */
    40             case XmlPullParser.START_DOCUMENT:
    41                 list=new ArrayList<Person>();
               break;
    42 case XmlPullParser.START_TAG: 43 String tagName=parser.getName(); 44 //得到属性标记通过getName 45 if("person".equals(tagName)){ 46 person=new Person(); 47 //获得标记后的属性值通过getAttributeName和getAttributeValue两个方法 48 for(int i=0;i<parser.getAttributeCount();i++){ 49 String name=parser.getAttributeName(i); 50 String value=parser.getAttributeValue(i); 51 if("id".equals(name)){ 52 person.setId(value); 53 } 54 } 55 }else if("name".equals(tagName)){ 56 //得到属性标记之后的值,通过nextText方法 57 person.setName(parser.nextText()); 58 }else if("age".equals(tagName)){ 59 person.setAge(parser.nextText()); 60 }
               break;
    61 case XmlPullParser.END_TAG: 62 if("person".equals(parser.getName())){ 63 list.add(person); 64 person=null; 65 }
              break;
    66 }
            event=parser.next();
    67 } 68 //解析结束,返回集合 69 return list; 70 } 71 72 } 73 class Person{ 74 private String name,age,id; 75 76 public String getName() { 77 return name; 78 } 79 80 public void setName(String name) { 81 this.name = name; 82 } 83 84 public String getAge() { 85 return age; 86 } 87 88 public void setAge(String age) { 89 this.age = age; 90 } 91 92 public String getId() { 93 return id; 94 } 95 96 public void setId(String id) { 97 this.id = id; 98 } 99 }
  • 相关阅读:
    ue父子组件的数据传递示例
    vue.js 组件之间传递数据
    Vue2.0子同级组件之间数据交互
    assets 和static的区别
    Vue中src属性绑定的问题
    css3设置背景图片的大小
    如何在HTML中插入空格
    css背景图片的设置
    vue动态组件 互相之间传输数据 和指令的定义
    webservice的优缺点
  • 原文地址:https://www.cnblogs.com/zxxiaoxia/p/4320913.html
Copyright © 2011-2022 走看看