【Java Xml】dom4j写入XML
文章目录
- 概述
- 前期准备
- 使用
- 写入
- 改造成接口
- 基础接口
- 使用方式
概述
官网
读取查看另一篇:链接
前期准备
maven
<!-- 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>
使用
基础类
@Data
@AllArgsConstructor
public class Book {private String title;private String author;private int price;// getter和setter方法省略
}
写入
main
// 创建一个Book对象
Book book = new Book("Java Programming", "John Doe", 29);// 将 Book 对象转为 XML
Document document = createXml(book);// 保存 XML 到文件
saveXmlToFile(document, "demo/book2222.xml");
方法
// 将 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);// 创建 XMLWriterXMLWriter writer = new XMLWriter(new FileWriter(filePath), format);// 写入 XML 文件writer.write(document);writer.close();
}
改造成接口
基础接口
XmlWriteBaseHandler
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);// 创建 XMLWriterXMLWriter writer = new XMLWriter(new FileWriter(filePath), format);// 写入 XML 文件writer.write(document);writer.close();}
}
使用方式
实现基础接口
import BO.Book;
import base.XmlWriteBaseHandler;
import org.dom4j.Document;
import org.dom4j.Element;/*** xml写入实现**/
public class XmlWriteTestHandler implements XmlWriteBaseHandler<Book> {@Overridepublic 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;}
}
实际调用
// 数据准备
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");