文章目录
概述
读取查看另一篇:链接
前期准备
maven
xml
<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
</dependency>
使用
基础类
java
@Data
@AllArgsConstructor
public class Book {
private String title;
private String author;
private int price;
// getter和setter方法省略
}
写入
main
java
// 创建一个Book对象
Book book = new Book("Java Programming", "John Doe", 29);
// 将 Book 对象转为 XML
Document document = createXml(book);
// 保存 XML 到文件
saveXmlToFile(document, "demo/book2222.xml");
方法
java
// 将 Book 对象转为 XML
private static Document createXml(Book book) {
// 创建根元素 <Book>
Element rootElement = org.dom4j.DocumentHelper.createElement("Book");
// 为根元素添加子元素 <Title>, <Author>, <Price>
rootElement.addElement("Title").setText(book.getTitle());
rootElement.addElement("Author").setText(book.getAuthor());
rootElement.addElement("Price").setText(String.valueOf(book.getPrice()));
// 创建 Document 对象
Document document = org.dom4j.DocumentHelper.createDocument(rootElement);
return document;
}
// 保存 XML 到文件
private static void saveXmlToFile(Document document, String filePath) throws IOException {
// 创建输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
// 不写 XML 声明
format.setSuppressDeclaration(true);
// 声明后不换行
format.setNewLineAfterDeclaration(false);
// 去除空白字符
format.setTrimText(true);
// 设置缩进
format.setIndent(true);
format.setIndentSize(2);
// 创建 XMLWriter
XMLWriter writer = new XMLWriter(new FileWriter(filePath), format);
// 写入 XML 文件
writer.write(document);
writer.close();
}
改造成接口
基础接口
XmlWriteBaseHandler
java
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileWriter;
import java.io.IOException;
public interface XmlWriteBaseHandler<T> {
/**
* 对象bo转为xml
* // 创建根元素 <Book>
* Element rootElement = org.dom4j.DocumentHelper.createElement("Book");
*
* // 为根元素添加子元素 <Title>, <Author>, <Price>
* rootElement.addElement("Title").setText(book.getTitle());
* rootElement.addElement("Author").setText(book.getAuthor());
* rootElement.addElement("Price").setText(String.valueOf(book.getPrice()));
*
* // 创建 Document 对象
* Document document = org.dom4j.DocumentHelper.createDocument(rootElement);
*
* return document;
* @param bo
* @author
*/
public Document createXmlDoc(T bo);
/**
* 写入xml
*
* @param document 文档
* @param filePath 文件名
* @return {@link Document }
* @author
*/
public default void writeXml(Document document, String filePath) throws IOException {
// 创建输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
// 不写 XML 声明
format.setSuppressDeclaration(true);
// 声明后不换行
format.setNewLineAfterDeclaration(false);
// 去除空白字符
format.setTrimText(true);
// 设置缩进
format.setIndent(true);
format.setIndentSize(2);
// 创建 XMLWriter
XMLWriter writer = new XMLWriter(new FileWriter(filePath), format);
// 写入 XML 文件
writer.write(document);
writer.close();
}
}
使用方式
实现基础接口
java
import BO.Book;
import base.XmlWriteBaseHandler;
import org.dom4j.Document;
import org.dom4j.Element;
/**
* xml写入实现
*
*/
public class XmlWriteTestHandler implements XmlWriteBaseHandler<Book> {
@Override
public Document createXmlDoc(Book book) {
// 创建根元素 <Book>
Element rootElement = org.dom4j.DocumentHelper.createElement("Book");
// 为根元素添加子元素 <Title>, <Author>, <Price>
rootElement.addElement("Title").setText(book.getTitle());
rootElement.addElement("Author").setText(book.getAuthor());
rootElement.addElement("Price").setText(String.valueOf(book.getPrice()));
// 创建 Document 对象
Document document = org.dom4j.DocumentHelper.createDocument(rootElement);
return document;
}
}
实际调用
java
// 数据准备
Book book = new Book("Java Programming", "John Doe", 29);
// 实现接口
XmlWriteBaseHandler<Book> bookHandler = new XmlWriteTestHandler();
// 写入xml
Document xmlDoc = bookHandler.createXmlDoc(book);
bookHandler.writeXml(xmlDoc, "demo/book1.xml");