当前位置: 首页 > news >正文

【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");
http://www.dtcms.com/a/477338.html

相关文章:

  • F024 vue+flask电影知识图谱推荐系统vue+neo4j +python实现
  • C++设计模式_结构型模式_外观模式Facade
  • 第 7 篇:交互的乐趣 - 响应用户输入
  • 解决Chrome 140以上版本“此扩展程序不再受支持,因此已停用”问题 axure插件安装问题
  • 如何在火语言中指定启动 Chrome 特定用户配置文件
  • 轻松测试二维码生成与识别:使用Python的qrcode、opencv和pyzbar库
  • 清河做网站报价大背景 网站
  • 迅捷视频转换器 v18.4.23 图文安装教程|支持MP4、AVI、MKV等多格式视频转换
  • 【AI论文】通过渐进式一致性蒸馏实现高效的多模态大语言模型
  • 怎么查看网站开发人网站建设流程及相应技术
  • kubecm切换k8s集群工具
  • Azure多项目管理全攻略:从资源部署到成本分析与优化
  • 怎么做游戏试玩网站城乡建设部网站 挂证
  • 历劫波,明真我——Debug Commune
  • Vue.js 模板语法
  • Spark RDD 宽窄依赖:从 DAG 到 Shuffle 的性能之道
  • scRNA-seq还是snRNA-seq,如何选择
  • 中国人做的比较好的shopify网站慈溪市住房和城乡建设局网站
  • 德州网站建设费用宁国市有做网站
  • 顺德品牌网站建设咨询建设宠物网站的可行性
  • 网站的惩罚期要怎么做苏州网站建设优化
  • 给公司做网站需要什么信息淘宝网站怎么做的好
  • 网站硬件需求淘客网站代理
  • 网站转发代码简单大气网站源码
  • 手机网站制作的公司滁州市建设局网站
  • 怎么建设手机网站首页邢台网站建设服务商
  • 春考网站建设wordpress svg
  • wordpress 网站禁用全屏代码医疗网站建设策划书
  • 高级室内设计网站织梦网站地图怎么做xml
  • 网站建设的步骤过程视频vR网站建设程序