Dom4j 解析 构建 XML

Dom4j 是 XML 常用解析方式之一
性能 功能都很强大 简单介绍一下

Maven 依赖(不用 Maven 可自行下载)

    <dependencies>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.6</version>
        </dependency>
    </dependencies>

上述配置中 jaxen 的包主要在使用 Xpath 时会被用到。

String XML 互转

SAXReader saxReader = new SAXReader(); 
Document document = saxReader.read(new ByteArrayInputStream(xml.getBytes()));
或
document = DocumentHelper.parseText(xml);

document.asXML();

生成 XML

        Document document=DocumentHelper.createDocument();
        Element root=document.addElement("DATAINFOS");
        root.addAttribute("uuid", "当前批数据的uuid");
        Element dataInfoEle=root.addElement("DARAINFO");
        Element categoryCodeEle=dataInfoEle.addElement("CATEGORYCODE");
        Element categoryNameEle=dataInfoEle.addElement("CATEGORYNAME");
        Element uuidEle=dataInfoEle.addElement("UUID");
        Element lastModifyRecordTimeEle=dataInfoEle.addElement("LASTMODIFYRECORDTIME");

        categoryCodeEle.addAttribute("REMARK", "类别编码");
        categoryNameEle.addAttribute("REMARK", "类别名称");
        uuidEle.addAttribute("REMARK","UUID");
        lastModifyRecordTimeEle.addAttribute("REMARK", "上一次变更时间");
        lastModifyRecordTimeEle.addAttribute("STARTTIME", startTime);
        lastModifyRecordTimeEle.addAttribute("ENDTIME",endTime);

        categoryCodeEle.addText(categorycode);
        categoryNameEle.addText(categoryname);
        uuidEle.addElement(uuid);
        document.setXMLEncoding("UTF-8");
        System.out.println(document.asXML());
        return document.asXML();

        思路生成根节点 逐个往下搭即可

解析 XML

记住一下几个方法即可

Element root=document.getRootElement(); //获取根节点
root.elementText("CODE")                //节点名取内容
root.element("CODE")                    //查找节点
root.getText()                          //获取节点内容
List<Element> dataList=ele.elements();  //当前节点下所有子节点

参考 https://www.cnblogs.com/nerxious/archive/2013/05/04/3060263.html