java解析循环xml报文_xml报文解析例子

该博客展示了如何使用Java的XMLPullParser解析器处理循环XML报文。通过创建Person对象并逐个解析XML标签,将数据填充到对象中,最终形成一个Person对象列表。
摘要由CSDN通过智能技术生成

待解析的xml报文如下:

李明xxx

23ccc

李量fff

25www

解析的java代码

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

import com.leequer.Doem.Person;/** * 使用pull解析xml * 2010-04-26 * @author leequer * */public class ReadXmlByPullService {  public static List ReadXmlByPull (InputStream inputStream)throws Exception {  List personList = null;  /**   * android给我们提供了xml 用来得到xmlpull解析器   */  XmlPullParser xmlpull = Xml.newPullParser();  /**   * 将输入流传入 设定编码方式   *    */  xmlpull.setInput(inputStream, "utf-8");  /**   * pull读到xml后 返回数字   *     读取到xml的声明返回数字0 START_DOCUMENT;      读取到xml的结束返回数字1 END_DOCUMENT ;      读取到xml的开始标签返回数字2 START_TAG      读取到xml的结束标签返回数字3 END_TAG      读取到xml的文本返回数字4 TEXT   */  int eventCode = xmlpull.getEventType();  /**   * 只要这个事件返回的不是1 我们就一直读取xml文件   */  Person person = null;  while(eventCode!=XmlPullParser.END_DOCUMENT)  {      switch (eventCode)   {        case XmlPullParser.START_DOCUMENT:        {//开始文档 new数组             personList =new  ArrayList();             break;         }         case XmlPullParser.START_TAG:        {            if("person".equals(xmlpull.getName()))            {                  person =  new Person();                  person.setId(xmlpull.getAttributeValue(0));             }else if (person!=null)             {             if(("name".equals(xmlpull.getName())))              {             /**              * 如果当前元素的下一个元素是文本节点 就可以直接用nextText()这个方法来得到文本节点的内容              */                person.setName(xmlpull.nextText());              }else if ("age".equals(xmlpull.getName()))              {              /**             * 如果当前元素的下一个元素是文本节点 就可以直接用nextText()这个方法来得到文本节点的内容              */             person.setAge(xmlpull.nextText());            }          }        break;       }              case XmlPullParser.END_TAG:       {            if("person".equals(xmlpull.getName())&&person!=null)             {                  personList.add(person);                 person = null;        }           break;      }    }      eventCode = xmlpull.next();//没有结束xml文件就推到下个进行解析        }    return personList; }}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值