转载:rowandjj(csdn博客)
效果图如下:
代码如下:
public class PullParse{ public List<Person> doParse(InputStream is) { List<Person> persons = null ; Person person = null ; try { XmlPullParser parser = Xml.newPullParser(); //设置解析数据源 parser.setInput(is,"utf-8"); //取得事件的类型 int eventType = parser.getEventType(); String eleName = null ; while(eventType != XmlPullParser.END_DOCUMENT){ switch(eventType){ //文档开始 case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break ; //元素开始 case XmlPullParser.START_TAG: eleName = parser.getName(); if("person".equals(eleName)){ person = new Person(); person.id = Integer.parseInt(parser.getAttributeValue(0)); } else if("name".equals(eleName)){ person.name = parser.nextText(); } else if("age".equals(eleName)){ person.age = Integer.parseInt(parser.nextText()); } break ; //标记结束 case XmlPullParser.END_TAG: eleName = parser.getName(); if("person".equals(eleName)){ persons.add(person); } break ; } //手动激活下个事件的触发 eventType = parser.next(); } } catch (Exception e) { e.printStackTrace(); } return persons; } }
另一种解析xml代码如下:
public class SaxParse{ /** * sax解析器 */ private SAXParser parser; public SaxParse(){ try { SAXParserFactory f = SAXParserFactory.newInstance(); parser = f.newSAXParser(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } public List<Person> doParse(InputStream is) { try { XmlHandler h = new XmlHandler(); parser.parse(is,h); return h.getpersons(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 处理器 */ class XmlHandler extends DefaultHandler{ List<Person> persons = null ; Person person = null ; //当前元素名称 private String currEleName; /** * 文本节点触发该方法 */ public void characters(char[] ch,int start,int length)throws SAXException { String str = new String(ch,start,length); //name if("name".equals(currEleName)){ person.name = str ; } else if("age".equals(currEleName)){ person.age = Integer.parseInt(str); } } public void endDocument() throws SAXException { } /** * 元素结束 */ public void endElement(String uri,String localName,String qName) throws SAXException { if("person".equals(localName)){ persons.add(person); } //将当前元素置空 else if(("name".equals(currEleName)) || ("age".equals(currEleName))){ this.currEleName = "" ; } } /** * 文档开始事件 */ public void startDocument() throws SAXException { persons = new ArrayList<Person>(); } /** * 元素开始事件 * localName:本地名 * uri:名字空间 * qName:限定名,前缀 + 本地名 */ public void startElement(String uri,String qName, Attributes attributes) throws SAXException { //实例化person对象 if("person".equals(localName)){ person = new Person(); person.id = Integer.parseInt(attributes.getValue(0)); } //name元素 else if("name".equals(localName)){ this.currEleName = "name" ; } //name元素 else if("age".equals(localName)){ this.currEleName = "age" ; } } public List<Person> getpersons(){ return persons ; } } }
代码有点多,我就不一一贴出了
想看就 点击下载 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|