Android XML JSON互转

xml JSON互转

//xml转json
public void parse() {
        GLog.e("parse xml start");
        XmlToJson.Builder builder = new XmlToJson
                .Builder(readConfigXmlToStr());

        //ConfigXmlJsonConstants.FORCE_LIST 为数组的标签,例如option标签
        for (String str : ConfigXmlJsonConstants.FORCE_LIST) {
            builder.forceList(str);
        }
        XmlToJson xmlToJson = builder.build();

        try {
           //LocalConfigXml为xml转json相对应的对象
            LocalConfigXml mLocalConfigXml = JSON.parseObject(xmlToJson.toJson().toString(), LocalConfigXml.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        GLog.e("parse xml end");
    }

//json转xml

    public void generate() {
        GLog.e("generate xml start");

       LocalConfigXml mLocalConfigXml;//json存储的对象
        JsonToXml.Builder builder = new JsonToXml.Builder(JSON.toJSONString(mLocalConfigXml));

       //GenerateForceAttributeUtils.getInstance().getForceAttribute()为属性值标签路径list
        for (String str : GenerateForceAttributeUtils.getInstance().getForceAttribute()) {
            builder.forceAttribute(str);
        }

       //GenerateForceAttributeUtils.getInstance().getForceAttribute()为内容标签路径list

        for (String str : GenerateForceAttributeUtils.getInstance().getForceContent()) {
            builder.forceContent(str);
        }
        JsonToXml jsonToXml = builder.build();

        writeConfigStrToXml(jsonToXml.toFormattedString());
        GLog.e("generate xml end");
    }

    private String readConfigXmlToStr() {
        String xmlStr = "";
        FileInputStream input = null;
        try {
            input = new FileInputStream(new File(LocalConfigXmlConstants.CONFIG_XML_PATH));
            int length = input.available();
            byte[] buffer = new byte[length];
            input.read(buffer);
            xmlStr = new String(buffer);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != input) {
                    input.close();
                }
            } catch (Exception e) {

            }

        }

        return xmlStr;
    }

    public static void writeConfigStrToXml(String content) {
        FileWriter writer = null;
        File file = new File(LocalConfigXmlConstants.CONFIG_XML_PATH);
        try {
            if (file.exists()) {
                file.delete();
            }
            file.createNewFile();

            writer = new FileWriter(file, true);
            writer.write(content);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != writer) {
                    writer.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    }

注意:

1、以上需要用到两个库

implementation 'com.github.smart-fun:XmlToJson:1.4.5'    //参考 https://github.com/smart-fun/XmlToJson

api files('libs/fastjson-1.2.6.jar') //fastjson库

2、LocalConfigXml //为了保证解析和生成xml的标签不同顺序,json对象需要设置顺序值

ordinal 标签顺序值,name标签的实际名称

public class Parse {
    @JSONField(ordinal = 1, name = "common")
    private String common;
    @JSONField(ordinal = 2, name = "solutions")
    private String solutions;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值