dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点。
首先导入依赖:
<!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.1</version>
</dependency>
一,解析
现需要解析一个xml格式的字符串(xmltest),例如:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<permission>
<business>
<businessid>190821111342002710</businessid>
<citemid></citemid>
<citemversion></citemversion>
<permid>170031205GG90618001</permid>
<largeitemid>170031205GG90618</largeitemid>
<smallitemid>001</smallitemid>
<smallitemname>供暖竣工验收</smallitemname>
</business>
<forms>
<form>
<dataid>20190821111345106610</dataid>
<dataxml>
<data>
<PROJECTNAME><![CDATA[工程建设项目]]></PROJECTNAME>
<PROJECT_CODE><![CDATA[2019-410182-54-02-031491]]></PROJECT_CODE>
<INC_JGMC><![CDATA[123123]]></INC_JGMC>
<FDDBR><![CDATA[郑测试]]></FDDBR>
<FDDBR_SFZ><![CDATA[410823188888888]]></FDDBR_SFZ>
<JCDWMC><![CDATA[]]></JCDWMC>
</data>
</dataxml>
<formid>20190628153137147025</formid>
<formtype>0</formtype>
<formver>1.0</formver>
</form>
</forms>
</permission>
解析:
Document doc=null;
// 下面的是通过解析xml字符串的
doc = DocumentHelper.parseText(xmltest); // 将字符串转为XML
//获取根节点元素对象
Element root = doc.getRootElement(); // 获取根节点
//获得根节点下面的子节点
String str=root.element("business").elementText("smallitemname");
System.out.println(str);
以上只是个实例,只取到了xml节点的值,开发过程中具体情况请具体对待,
二,封装
假如已经规定了封装数据格式如:
<node>
<nodecode><![CDATA[环节代码]]></nodecode>
<nodename><![CDATA[环节名称]]></nodename>
<version><![CDATA[数据版本号]]></version>
<sn><![CDATA[序号]]></sn>
<operator><![CDATA[环节处理人]]></operator>
<operatorduty><![CDATA[环节处理人职务名称]]></operatorduty>
<deptcode><![CDATA[环节处理部门组织机构代码 (如果为跨层级业务为必填)]]></deptcode>
<handletime><![CDATA[环节处理时间]]></handletime>
<handlestate><![CDATA[环节处理状态]]></handlestate>
<handleadvice><![CDATA[环节处理意见]]></handleadvice>
<prenodecode><![CDATA[上一环节代码]]></prenodecode>
<nextnodecode><![CDATA[下一环节代码]]></nextnodecode>
<completeresultscode><![CDATA[办结结果代码]]></completeresultscode>
<nodeform><![CDATA[环节表单信息]]></nodeform>
</node>
封装数据:
//封装xmldoc
Document doc= DocumentHelper.createDocument();
Element rootElement=doc.addElement("node");
rootElement.addElement("nodecode").addText("环节代码");
rootElement.addElement("nodename").addText("环节名称");
rootElement.addElement("version").addText("数据版本号");
rootElement.addElement("sn").addText("");
rootElement.addElement("operator").addText("");
rootElement.addElement("operatorduty").addText("");
rootElement.addElement("deptcode").addText("");
rootElement.addElement("handletime").addText("");
rootElement.addElement("handlestate").addText("");
rootElement.addElement("handleadvice").addText("");
rootElement.addElement("prenodecode").addText("");
rootElement.addElement("nextnodecode").addText("");
rootElement.addElement("completeresultscode").addText("");
rootElement.addElement("nodeform").addText("");
String str = doc.asXML();
System.out.println(str);
输出示例: