【工具类】xml生成工具类

16 篇文章 0 订阅
12 篇文章 0 订阅

前言:最近一直在玩工单,前人写的处理xml工单的方式太水了,所以这里自己写了一个工具类,并且分享一下:

package com.bytue.ma_vod.modules.macenter.util;

import com.bytue.ma_vod.modules.macenter.vo.ElementBean;
import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.dom.DOMElement;
import org.dom4j.io.XMLWriter;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author martin
 * @version 1.0
 * @name: XmlTreeUtil
 * @date: 2020/9/28 17:30
 * @description 依据c2规范,按照需求构造Xml树节点
 * @comepony 北京百途
 **/
@Slf4j
public class XmlTreeUtil {
    /**  构建Oject | Mapping节点
     * @param nodeName 节点名称,如Object | Mapping
     * @param elementBean AttributeMap 属性Mapping propertyMap 子节点map
     * @return
     */
    public static Element generatorObject(String nodeName, ElementBean elementBean){
        Element element = new DOMElement(nodeName);
        // 参数处理
        Map<String, Object> attributeMap = elementBean.getAttributeMap();
        attributeMap.forEach((k,v) ->{
            //增强型处理。
            if(v.equals("]]>") || v.equals("<")||v.equals(">")||v.equals("&")||v.equals("'")||v.equals("\"")){
                element.addAttribute(k,"<![CDATA["+v.toString()+"]]>");
            }
            else{
                element.addAttribute(k,v.toString());
            }
        });
        // 属性处理
        Map<String, Object> propertyMap = elementBean.getPropertyMap();
        propertyMap.forEach((k,v)->{
            Element child = element.addElement("Property");
            child.addAttribute("Name",k);
            // 增强型处理。
            if(v.equals("]]>") || v.equals("<")||v.equals(">")||v.equals("&")||v.equals("'")||v.equals("\"")){
                child.addCDATA(v.toString());
            }else{
                child.setText(v.toString());
            }
        });
        return  element;
    }
    // 构建Mapping节点
    public static void main(String[] args) throws IOException {
        Map attr = new HashMap<>();
        attr.put("Code","1111");
        attr.put("Id","1111");
        attr.put("ElementType","Program");
        attr.put("Action","1111");
        attr.put("Name","重启&之季极海听雷");
        Map property = new HashMap<>();
        property.put("ContentProvider","爱奇艺");
        property.put("Tags","冒&<险,热血");
        property.put("OriAirDate","2020");
        ElementBean elementBean = new ElementBean();
        elementBean.setAttributeMap(attr);
        elementBean.setPropertyMap(property);
        Element element = generatorObject("Object", elementBean);
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("E://test//test.xml"));
        xmlWriter.write(element);
    }
}

要注意的问题有以下三个:

0.用到的是dom4j。

1.JDK要大于1.8 不然循环需要改写成for。

2.用到了lombok的@Slf4j的日志标签,可以去掉。

3.关于处理xml无法支持的字符,可以去掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值