xml文件也是一种数据存储格式,可以用来存储数据,这里介绍Xml文的通用解析,和通用序列化,序列化一般指转换为流,这里指对象转换为xml文件存储起来。什么是通用?一般
解析一个xml文件就需要特定为其写一个xml文件解析函数,多个xml文件就需要多个xml函数。这样太过繁琐?有没有只用一个函数就能解析不同的xml文件,序列化不同的对象。答案是已经有了,第三方框架XStream,还有Retrofit的xml解析框架。他们都通过注解来解析xml文件。
我自己也想试试。写了个简单的xml通用解析工具类,由于个人水平有限,有不足之处,还请指出来。这个xml解析工具类通过反射机制来解析xml文件和序列化xml文件。xml文件解析的思想:遇到标签存储内容,遍历类中每一个字段,看是否是标签对应的字段,是的话就赋值,如果是数组类型的字段,就特殊处理,再反射得到数组元素的类中所有字段,然后递归调用上述逻辑,确保每一层标签得到处理。最后得到由xml文件转换成的类。
public static Object pull(String className, InputStream inputStream) {
Object o =null;
try {
Class css = Class.forName(className);
o = css.newInstance();
Field[] fields = css.getFields();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
xpp = factory.newPullParser();
xpp.setInput(inputStream, Ecoding);
int eventType = xpp.getEventType();
String propertyName = "";
String foraheadpropertyName="";
String arrayNodeTag="";