把解析器解析XML文件

  

<李>

XML XML <李>

<李>

& lt; ?xml version=" 1.0 " encoding=" utf - 8 " ?比;   & lt; persons>   & lt;人id=" 10 "比;   & lt; name> gaohao   & lt; age> 25 & lt;/age>   & lt;/person>   & lt;人id=笆弧北?   & lt; name> gaofeng   & lt; age> 31日& lt;/age>   & lt;/person>   & lt;/persons> <李>

在领域层新类建人,存放从XML解析出来的数据

<李>
公共类人
  私人整数id;
  私人字符串名称;
  私人整数年龄;
  公共整数getId () {
  返回id;
  }
  公共空间setId(整数id) {
  这一点。id=id;
  }
  公共字符串getName () {
  返回名称;
  }
  公共空间setName(字符串名称){
  this.name=名称;
  }
  公共整数getAge () {
  返回年龄;
  }
  公共空间setAge(整数年龄){
  这一点。年龄=年龄;
  }
  @Override
  公共字符串toString () {
  返回“人[id=" +身份证+”,name=" +名字+ ",年龄=" +年龄+ "]”;
  }
  }

<李>

在业务层新建PersonService类,解析XML文件

公共类PersonService {
  公共静态List{getperson (InputStream xml)抛出异常
  List人=零;
  人的人=零;//使用拉解析XML文件//XmlPullParser pullParser=XmlPullParserFactory.newInstance () .newPullParser();//得到拉解析器
  XmlPullParser pullParser=Xml.newPullParser();//也可以用该方法创建解析器
  pullParser。setInput (xml, " utf - 8 ");//设置拉解析器要解析的数据//产生事件
  int事件=pullParser.getEventType ();//对事件进行判断
  而(事件!=XmlPullParser.END_DOCUMENT) {
  开关(事件){
  案例XmlPullParser.START_DOCUMENT://文档开始
  人=new ArrayList();//存放解析数据数组的初始化
  打破;
  
  案例XmlPullParser.START_TAG:
  如果(“人”.equals (pullParser.getName ())) {
  int id=新的整数(pullParser.getAttributeValue (0));
  人=new ();
  person.setId (id);
  }
  如果(“名字”.equals (pullParser.getName ())) {
  字符串名称=pullParser.nextText();//得到后面的文本
  person.setName(名称);
  }
  如果(“年龄”.equals (pullParser.getName ())) {
  int年龄=new Integer (pullParser.nextText());//得到后面的文本
  person.setAge(年龄);
  }
  打破;
  案例XmlPullParser.END_TAG:
  如果(“人”.equals (pullParser.getName ())) {
  persons.add(人);
  人=零;
  }
  打破;
  }//解析完第一个字符,会停止解析,要让其继续,需要调用如下方法
  事件=pullParser.next();//进入到后面的节,点触发案例XmlPullParser.START_TAG事件,利用循环解析
  }
  返回的人;
  }
  }

通过以上步骤即可将XML文件中的数据解析出来,通过单元测试显示解析出来的数据

<李>

在AndroidManifest。xml文件中引入单元测试环境

& lt; uses-library android: name=" android.test.runner "/比;      & lt;仪表android: name=" android.test.InstrumentationTestRunner "   android: targetPackage=" cn.gaohao。xml“android: label="测试我的程序”/祝辞


<李>

新建一个单元测试方法


公共类PersonServiceTest延伸AndroidTestCase {   私有静态最终字符串标签=癙ersonServiceTest”;   公共空间testPersons()抛出异常{   .getResourceAsStream .getClassLoader InputStream xml=this.getClass () () (“person.xml”);   List人=PersonService.getPersons (xml);   (人的人:人){   日志。我(标签,person.toString ());   }   }   }

执行该测试方法就会在LogCat控制台打印如下信息

 03-28 06:13:45.375:信息/PersonServiceTest(1247):人[name=gaohao id=10日,年龄=25)
  03-28 06:13:45.375:信息/PersonServiceTest(1247):人[name=高峰id=11日,年龄=31]

通过以上方法即可实现对XML文件中数据的解析。

  附件:http://down.51cto.com/data/2364225

把解析器解析XML文件