栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

生成XML串(自用)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成XML串(自用)

生成xml字符串笔记

灵魂来源 :https://blog.csdn.net/p812438109/article/details/81807440

一、工具(就是按照规则给排列一下)
public class XmlUtil {

    
    public static final String base_FLAG = "baseFlag";

    
    public static String createXmlByModel(Object param) throws ParserConfigurationException, TransformerException {
        if (null == param) {
            return "";
        }
        //生成xml
        documentBuilderFactory factory = documentBuilderFactory.newInstance();
        documentBuilder builder = factory.newdocumentBuilder();
        document document = builder.newdocument();
        document.setXmlStandalone(true);

        //第一次遍历获取根节点标签
        linkedHashMap paramMap = JSONObject.parseObject(JSONObject.toJSONString(param), linkedHashMap.class);
        Element itemInfo = null;
        for (String key : paramMap.keySet()) {
            Object value = paramMap.get(key);
            if (null == itemInfo) {
                for (String itemKey : paramMap.keySet()) {
                    String[] itemKeyItemStr = itemKey.split("_");
                    if (null != itemKeyItemStr && itemKeyItemStr.length >= 2 && base_FLAG.equals(itemKeyItemStr[itemKeyItemStr.length - 1])) {
                        itemInfo = document.createElement(itemKeyItemStr[0]);
                    }
                }
            }
            if (value instanceof Boolean) {
                continue;
            } else if (value instanceof List) {
                //循环
                for (Object key_valueList : (List) value) {
                    setRootNode(key_valueList, document, itemInfo);
                }
            } else {
                setRootNode(value, document, itemInfo);
            }
        }
        // 添加根节点
        document.appendChild(itemInfo);

        TransformerFactory transFactory = TransformerFactory.newInstance();
        Transformer transformer = transFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        DOMSource domSource = new DOMSource(document);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        transformer.transform(domSource, new StreamResult(bos));
        return bos.toString();
    }


    private static void setRootNode(Object param, document document, Element element) {
        linkedHashMap paramMap = JSONObject.parseObject(JSONObject.toJSONString(param), linkedHashMap.class);
        if (null == paramMap || paramMap.size() <= 0) {
            return;
        }
        
        Element itemInfo = null;
        for (String key : paramMap.keySet()) {
            Object value = paramMap.get(key);
            if (null == itemInfo) {
                for (String itemKey : paramMap.keySet()) {
                    String[] itemKeyItemStr = itemKey.split("_");
                    if (null != itemKeyItemStr && itemKeyItemStr.length >= 2 && base_FLAG.equals(itemKeyItemStr[itemKeyItemStr.length - 1])) {
                        itemInfo = document.createElement(itemKeyItemStr[0]);
                    }
                }
            }
            if (value instanceof Boolean) {
                continue;
            } else if (value instanceof String) {
                if (null != value && !"".equals(value)) {
                    itemInfo.setAttribute(key, (String) value);
                }
            } else if (value instanceof List) {
                //循环
                for (Object key_valueList : (List) value) {
                    setRootNode(key_valueList, document, itemInfo);
                }
            } else {
                setRootNode(value, document, itemInfo);
            }
        }
        //将当前标签放入参数 element 标签下
        element.appendChild(itemInfo);
    }
}
二、实体类
@Data
public class XmlModel {

    private String license_baseFlag;

    private Basic licenseModel;

    private CatalogModel catalogModel;

    
    @Data
    public class Basic{

        private String surface_baseFlag;

        private List surfaceList;

    }

    @Data
    public class CatalogModel{

        private String catalog_baseFlag;

        private String catalogId;

        private String catalogName;

        private String templateId;

        private String templateName;

        private String version;
    }
    @Data
    public class SurfaceModel{

        private String item_baseFlag;

        private String alias;

        private String code;

        private String name;

        private String require;

        private String value;
    }
}

三、调用测试
  XmlModel xmlModel = new XmlModel();
        xmlModel.setLicense_baseFlag("");
        XmlModel.Basic basic = new XmlModel().new Basic();
        basic.setSurface_baseFlag("");
//        basic.setbaseFlag(true);

        XmlModel.CatalogModel catalogModel = new XmlModel().new CatalogModel();
        catalogModel.setCatalog_baseFlag("");
        catalogModel.setCatalogId("dsa45dsad");
        catalogModel.setCatalogName("danamename");
        catalogModel.setTemplateName("Dasdwr");
        catalogModel.setTemplateId("das_id");
        xmlModel.setCatalogModel(catalogModel);

        ArrayList surfaceModelArrayList = new ArrayList<>();
        XmlModel.SurfaceModel surfaceModel = new XmlModel().new SurfaceModel();
        surfaceModel.setItem_baseFlag("");
        surfaceModel.setAlias("dashjhg");
        surfaceModel.setCode("dakjhng");
        surfaceModelArrayList.add(surfaceModel);
        XmlModel.SurfaceModel surfaceModel2 = new XmlModel().new SurfaceModel();
        surfaceModel2.setItem_baseFlag("");
        surfaceModel2.setAlias("dasheqwewqe23213jhg");
        surfaceModel2.setCode("rferfsrdakjhrng");
        surfaceModelArrayList.add(surfaceModel2);
        basic.setSurfaceList(surfaceModelArrayList);
        xmlModel.setLicenseModel(basic);
        String xmlByModel = XmlUtil.createXmlByModel(xmlModel);
        System.out.println(xmlByModel);

结果


	
	
		
		
	

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号