最近在写webservice接口时,需要发送xml格式的报文,自己用dom4j手动拼了一下,写篇文章记录一下
1、导入依赖
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
2、实测代码
废话不多说直接上代码
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.StringWriter;
/**
* @author xwli
* @date: 2021/9/2 15:26
* @desc
* @since JDK 1.8
*/
public class TestUtils {
public static void main(String[] args) {
createXml();
}
public static String createXml() {
try {
// 1、创建document对象
Document document = DocumentHelper.createDocument();
// 2、创建根节点root
Element root = document.addElement("root");
// 3、向root节点添加name属性
root.addAttribute("name", "test");
// 4、生成子节点及子节点内容
Element child = root.addElement("child");
child.addAttribute("name","子节点");
child.setText("测试内容");
// 5、设置生成xml的格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码格式
format.setEncoding("UTF-8");
// 6、生成xml文件
File file = new File("D:/test.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
writer.setEscapeText(false);
writer.write(document);
writer.close();
// 7、生成xml字符串
StringWriter sw = new StringWriter();
XMLWriter xmlWriter = new XMLWriter(sw, format);
// 设置是否转义,默认使用转义字符
xmlWriter.setEscapeText(false);
xmlWriter.write(document);
xmlWriter.close();
System.out.println("生成test.xml成功");
return sw.toString();
} catch (Exception e) {
e.printStackTrace();
System.out.println("生成test.xml失败");
}
return "fail";
}
}
效果如下
3、主要操作,方法
自己构造报文,大概就是以下这么几步,首先创建document对象,然后在document对象基础上创建根节点,以及子节点。或者可以为节点添加自己想要的属性以及给标签赋值等等
(1)创建document对象,以及根节点
// 1、创建document对象
Document document = DocumentHelper.createDocument();
// 2、创建根节点root
Element root = document.addElement("root");
(2)创建子节点 addElement(“标签名”)
//root可以任意标签节点,因为每个节点都可能有子节点,你想怎么定制就怎么去设计
Element child = root.addElement("child");
(3)给标签添加属性addAttribute(属性名,属性值)
root.addAttribute("name", "test");
(4)给标签赋值
child.setText("测试内容");
(5)获取根标签
document.getRootElement();
(6)获取标签下的指定元素
-
假设是单个元素
element.element("xxx");
-
假设该元素在根标签下存在多个
element.elements("");