Xml文件通用解析与序列化

本文探讨了XML文件作为数据存储格式的使用,并介绍了如何实现XML的通用解析和序列化。通过第三方框架如XStream和Retrofit的XML解析库,可以实现通过注解解析不同XML文件和序列化对象。作者还分享了一个简单的自定义XML通用解析工具类,利用反射机制处理XML标签和数组类型的字段,将XML转换为类实例。反向操作,即XML文件的序列化,则通过构建树形结构并进行深度优先遍历来生成XML文件。
摘要由CSDN通过智能技术生成

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="";
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值