本文实例讲述了AndroID编程使用sax解析xml数据的方法。分享给大家供大家参考,具体如下:
随着技术的发展,现在的web已经和以前不同了。web已经逐渐像移动的方向倾斜,作为程序员的确应该拓展一下自己的知识层面。学习各方面的知识,今天就接着前几天的弄一下AndroID的xml解析,这次就使用sax的方式解析xml.下面就一步一步的来做吧。
1. 编写一个简单的xml
<?xml version="1.0" enCoding="UTF-8"?><persons> <person ID="01"> <name>will</name> <age>21</age> </person> <person ID="02"> <name>will2</name> <age>22</age> </person></persons>
2. 编写pojo类
package org.lxh.vo;public class Person { private String ID; private String name; private int age; public String getname() { return name; } public voID setname(String name) { this.name = name; } public String toString() { return "Person [ID=" + ID + ",name=" + name + ",age=" + age + "]"; } public int getAge() { return age; } public voID setAge(int age) { this.age = age; } public String getID() { return ID; } public voID setID(String ID) { this.ID = ID; }}
3. 写一个解析xml的类
package org.lxh.impl;import java.io.inputStream;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.lxh.vo.Person;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import androID.util.Log;public class Parse { public List<Person> findAll(inputStream in) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); //创建解析工厂 SAXParser parser = factory.newSAXParser(); ParsePerson chuli = new ParsePerson(); parser.parse(in,chuli); in.close(); //关闭输入流 return chuli.getData(); } //开始解析xml public class ParsePerson extends DefaultHandler { List<Person> all = null; Person person = null; String flag = null; public List<Person> getData() { return all; } public voID startdocument() throws SAXException { all = new ArrayList<Person>(); //实例化集合 } public voID startElement(String uri,String localname,String qname,Attributes attributes) throws SAXException { if ("person".equals(localname)) { person = new Person(); person.setID(attributes.getValue(0)); //取得ID的内容 } flag = localname; //记录上一个element } public voID characters(char[] ch,int start,int length) throws SAXException { if (flag != null) { //这样做取得的值就不会重复 String data = new String(ch,start,length); if ("name".equals(flag)) { person.setname(data); } else if ("age".equals(flag)) { person.setAge(Integer.parseInt(data)); } } } public voID endElement(String uri,String qname) throws SAXException { if ("person".equals(localname)) { all.add(person); person = null; } flag = null; } }}
4. 进行单元测试
<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID" package="org.lxh.activity" androID:versionCode="1" androID:versionname="1.0"> <application androID:icon="@drawable/icon" androID:label="@string/app_name"> <uses-library androID:name="androID.test.runner"/> <activity androID:name=".SaxParseXmlActivity" androID:label="@string/app_name"> <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <instrumentation androID:name="androID.test.InstrumentationTestRunner" androID:targetPackage="org.lxh.activity" androID:label="TestforMyApp"/> <uses-sdk androID:minSdkVersion="8" /></manifest>
package org.lxh.activity;import java.io.inputStream;import java.util.Iterator;import java.util.List;import org.lxh.impl.Parse;import org.lxh.vo.Person;import androID.test.AndroIDTestCase;import androID.util.Log;public class Test extends AndroIDTestCase{ public static final String tag="Test"; public voID testShuchu() throws Throwable{ //Log.i(tag,"123"); Parse p=new Parse(); inputStream in=getClass().getClassLoader().getResourceAsstream("persons.xml"); List<Person> all=p.findAll(in); Log.i(tag,String.valueOf(all.size())); Iterator<Person> it=all.iterator(); while(it.hasNext()){ Person person=it.next(); Log.i(tag,person.toString()); } }}
最后来看一下运行效果图,这里最好弄个filter,控制台就没那么乱了。
点击那个绿色的加号就OK了
PS:这里再为大家提供几款关于xml *** 作的在线工具供大家参考使用:
在线XML/JsON互相转换工具:
http://tools.jb51.net/code/xmljson
在线格式化XML/在线压缩XML:
http://tools.jb51.net/code/xmlformat
XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress
XML代码在线格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android *** 作XML数据技巧总结》、《Android编程之activity *** 作技巧总结》、《Android资源 *** 作技巧汇总》、《Android文件 *** 作技巧汇总》、《Android开发入门与进阶教程》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
总结以上是内存溢出为你收集整理的Android编程使用sax解析xml数据的方法详解全部内容,希望文章能够帮你解决Android编程使用sax解析xml数据的方法详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)