加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Pull解析器读取XML文件,及保存数据到xml文件中

发布时间:2020-12-16 09:40:43 所属栏目:百科 来源:网络整理
导读:package com.cyh.service;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml;import com.cyh.
package com.cyh.service;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

import com.cyh.domain.Person;

public class PersonService {
	
	/**
	 * 解析XML Pull破解器方法
	 * @param xml
	 * @return
	 * @throws Exception
	 */
	public static List<Person> getPersons(InputStream xml) throws Exception{
		List<Person> persons = null;
		Person person = null;
//		XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
		XmlPullParser parser = Xml.newPullParser();
		//为Pull破解器设置要解析的XML
		parser.setInput(xml,"UTF-8");
		int event = parser.getEventType();
		while(event != XmlPullParser.END_DOCUMENT){
			switch (event){
				case XmlPullParser.START_DOCUMENT:
					persons = new ArrayList<Person>();
					break;
				case XmlPullParser.START_TAG:
					if("person".equals(parser.getName())){
						person = new Person();
						int id = Integer.parseInt(parser.getAttributeValue(0));
						person.setId(id);
					}
					if("name".equals(parser.getName())){
						String name = parser.nextText();
						person.setName(name);
					}
					if("age".equals(parser.getName())){
						int age = Integer.parseInt(parser.nextText());
						person.setAge(age);
					}
					break;
				case XmlPullParser.END_TAG:
					if("person".equals(parser.getName())){
						persons.add(person);
						person = null;
					}
					break;
			}
			event = parser.next();
		}
		return persons;
	}
	
	/**
	 * 保存数据到XML文件中
	 * @param list
	 * @param out
	 * @throws Exception
	 */
	public static void save(List<Person> list,OutputStream out) throws Exception{
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(out,"UTF-8");
		serializer.startDocument("UTF-8",true);//文档开始
		serializer.startTag(null,"persons");
		for(Person p:list){
			serializer.startTag(null,"person");
			serializer.attribute(null,"id",p.getId().toString());
			
			serializer.startTag(null,"name");
			serializer.text(p.getName());
			serializer.endTag(null,"name");
			
			serializer.startTag(null,"age");
			serializer.text(p.getAge().toString());
			serializer.endTag(null,"age");
			
			serializer.endTag(null,"person");
		}
		serializer.endTag(null,"persons");
		serializer.endDocument();//文档结束
		out.flush();
		out.close();
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读