1,
package com.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.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import com.model.Person; /** * 解析基类 * @author HJ * */ public class BaseParser { /** Pull解析器解析XML文件数据 * @param xml 待解析数据以InputStream方式传入 * @return * @throws Exception */ public List<Person> getPersons(InputStream xml)throws Exception{ List<Person> persons = null; Person person = null; XmlPullParser pull = Xml.newPullParser(); //XmlPullParser pull = XmlPullParserFactory.newInstance().newPullParser(); //通过XMLPullParserFactory工厂类获取Pull解析器 pull.setInput(xml, "UTF-8");//为pull解析器设置需要解析的xml数据 int event = pull.getEventType(); while(event!=XmlPullParser.END_DOCUMENT){ switch (event) { case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if ("person".equals(pull.getName())) { person = new Person(); String IDcard = pull.getAttributeValue(0); person.setIDCard(IDcard); } if ("name".equals(pull.getName())) { String name = pull.nextText(); person.setName(name); } if ("sex".equals(pull.getName())) { String sex = pull.nextText(); person.setSex(sex); } if ("address".equals(pull.getName())) { String address = pull.nextText(); person.setAddress(address); } break; case XmlPullParser.END_TAG: if ("person".equals(pull.getName())) { persons.add(person); person = null; } break; } event = pull.next(); } return persons; } /** * 对象方式保存数据到XML文件 * @param persons 待保存数据集合 * @param out 输出流 * @throws Exception */ public void saveToXML(List<Person> persons,OutputStream out)throws Exception{ XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(out, "UTF-8"); serializer.startDocument("UTF-8", true); serializer.startTag(null, "persons"); for(Person person:persons){ serializer.startTag(null,"person"); serializer.attribute(null,"IDCard", person.getIDCard()); //name 节点 serializer.startTag(null,"name"); serializer.text(person.getName()); serializer.endTag(null, "name"); //sex 节点 serializer.startTag(null, "sex"); serializer.text(person.getSex()); serializer.endTag(null, "sex"); //address 节点 serializer.startTag(null, "address"); serializer.text(person.getAddress()); serializer.endTag(null, "address"); serializer.endTag(null, "person"); } serializer.endTag(null,"persons"); serializer.endDocument(); out.flush(); out.close(); } // }
2,persons.xml
<?xml version="1.0" encoding="UTF-8"?> <persons> <person IDcard="215x"> <name>Mr.Chiang</name> <sex>Gentleman</sex> <address>China</address> </person> <person IDcard="9527"> <name>Mrs.Chen</name> <sex>Lady</sex> <address>France</address> </person> </persons>
3,测试类
package com.emolay.test; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.List; import com.model.Person; import com.service.BaseParser; import android.test.AndroidTestCase; import android.util.Log; public class BaseParserTest extends AndroidTestCase { private static final String TAG = "BaseParserTest"; /** * test getPersons method * * @throws Exception */ public void testGetPersons() throws Exception { InputStream xml = this.getClass().getClassLoader() .getResourceAsStream("persons.xml"); BaseParser baseParser = new BaseParser(); List<Person> persons = baseParser.getPersons(xml); for (Person p : persons) { Log.i(TAG, p.getIDCard()); } } /** * test saveToXML method * * @throws Exception */ public void testSaveToXML() throws Exception { InputStream xml = this.getClass().getClassLoader() .getResourceAsStream("persons.xml"); BaseParser baseParser = new BaseParser(); List<Person> persons = baseParser.getPersons(xml); File fileXML = new File(getContext().getFilesDir(), "NewPersons.xml"); FileOutputStream out = new FileOutputStream(fileXML); baseParser.saveToXML(persons, out); } }
相关推荐
分享一个pull解析器,解析xml的利器,快来看看吧,很实用的解析器
利用android中自带的pull解析器解析和生成xml片段。
使用Junit测试解析xml和生成xml文件
NULL 博文链接:https://justsee.iteye.com/blog/930603
本人实现的基于Pull解析器的XML解析生成工具类,将XML文件转换成对象,将对象转换成XML文件并保存,全部通用,不需要与任何对象进行关联
主要针对android中的xml文件进行解析
Android中采用Pull解析器读取和生成xml内容案例...
使用Android自带的XML解析器PULL解析器简单的解析xml,并将内容显示在TestView上,代码简化过。
NULL 博文链接:https://eeelin.iteye.com/blog/1812828
采用Pull解析器解析和生成XML内容,适合小白上路
java_pull解析器使用包kxml2_xmlpull,包括gson-2.8.2.jar;kxml2-2.3.0.jar;xmlpull_1_1_3_4c.jar;xmlpull-1.1.3.1,jar;xstream-1.4.10.jar
一个eclipse工程包含如何使用android中自带的xml解析器pull,解析和生成xml文件
Pull解析器是Android系统内置的的,Pull解析器与SAX解析器类似,他提供了类似的事件,如开始元素和介绍元素的事件,使用parser.next()可以进入下一个元素并触发相应的事件,然后进行相应的处理,当元素开始解析时,...
一、使用Pull解析器读取XML文件 除了可以使用SAX或DOM解析XML文件之外,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE。如果用在...
使用android内置的pull解析器解析xml,演示了取节点名称、取节点属性值以及取节点下文本的方式,并根据节点名称通过反射取类中的变量的值
Android使用Pull解析器解析xml文件的实现代码,需要的朋友可以参考一下
VTD-XML-示例使用 VTD-XML 解析器与 volley 并与 pull 解析器进行比较的示例。
XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据;...Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型