具体分析Pull方式解析XML的示例代码

互联网 17-3-31
Pull方式解析XML 1、XML文件
<?xml version="1.0" encoding="UTF-8"?>  <persons>    	<person id="23">  		<name>liming</name>  		<age>30</age>  	</person>  	<person id="20">  		<name>lixiangmei</name>  		<age>25</age>  	</person>  </persons>
package com.example.pullparsexml;    public class Person {  	private Integer id;  	private String name;  	private Short age;  	  	public Person(){}  	  	public Person(Integer id, String name, Short age) {  		this.id = id;  		this.name = name;  		this.age = age;  	}  	  	public Integer getId() {  		return id;  	}  	public void setId(Integer id) {  		this.id = id;  	}  	public String getName() {  		return name;  	}  	public void setName(String name) {  		this.name = name;  	}  	public Short getAge() {  		return age;  	}  	public void setAge(Short age) {  		this.age = age;  	}  	@Override  	public String toString() {  		return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";  	}  	  }
package com.example.pullparsexml;    import java.io.InputStream;  import java.io.Writer;  import java.util.ArrayList;  import java.util.List;    import org.xmlpull.v1.XmlPullParser;  import org.xmlpull.v1.XmlSerializer;    import android.util.Xml;    public class PullParseXML {  	public static void save(List<Person> persons, Writer writer)  			throws Throwable {  		XmlSerializer serializer = Xml.newSerializer();  		serializer.setOutput(writer);  		serializer.startDocument("UTF-8", true);    		serializer.startTag(null, "persons");  		for (Person person : persons) {  			serializer.startTag(null, "person");  			serializer.attribute(null, "id", person.getId().toString());    			serializer.startTag(null, "name");  			serializer.text(person.getName());  			serializer.endTag(null, "name");    			serializer.startTag(null, "age");  			serializer.text(person.getAge().toString());  			serializer.endTag(null, "age");    			serializer.endTag(null, "person");  		}  		serializer.endTag(null, "persons");  		serializer.endDocument();  		writer.flush();  		writer.close();  	}    	public static List<Person> getPersons(InputStream inStream)  			throws Throwable {  		List<Person> persons = null;  		Person person = null;  		XmlPullParser parser = Xml.newPullParser();  		parser.setInput(inStream, "UTF-8");  		int eventType = parser.getEventType();// 产生第一个事件  		while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件  			switch (eventType) {  			case XmlPullParser.START_DOCUMENT:  				persons = new ArrayList<Person>();  				break;    			case XmlPullParser.START_TAG:  				String name = parser.getName();// 获取解析器当前指向的元素的名称  				if ("person".equals(name)) {  					person = new Person();  					person.setId(new Integer(parser.getAttributeValue(0)));  				}  				if (person != null) {  					if ("name".equals(name)) {  						person.setName(parser.nextText());// 获取解析器当前指向元素的下一个文本节点的值  					}  					if ("age".equals(name)) {  						person.setAge(new Short(parser.nextText()));  					}  				}  				break;    			case XmlPullParser.END_TAG:  				if ("person".equals(parser.getName())) {  					persons.add(person);  					person = null;  				}  				break;  			}  			eventType = parser.next();  		}  		return persons;  	}  }

以上就是具体分析Pull方式解析XML的示例代码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: Pull,XML
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Jaxb2实现Bean与xml互转的示例代码详解

相关资讯