Java如何创建XML文件 Java DocumentBuilder使用方法

发布时间 - 2026-02-01 00:00:00    点击率:
Java中创建XML文件需用DOM解析:先通过DocumentBuilderFactory获取DocumentBuilder,再创建Document;接着用createElement、createTextNode等构建节点并组织层级;最后用Transformer将DOM树序列化为XML文件。

Java中创建XML文件常用DOM解析方式,核心是通过DocumentBuilder生成空文档,再用Document对象构建节点、设置内容,最后用Transformer写入文件。关键在于正确获取DocumentBuilder实例,避免直接new——必须通过DocumentBuilderFactory创建。

获取DocumentBuilder并新建Document

不能直接实例化DocumentBuilder,需通过工厂类获取线程不安全但轻量的builder:

  • 调用DocumentBuilderFactory.newInstance()获取工厂
  • 可选:关闭验证和命名空间支持(如setValidating(false)setNamespaceAware(false))以提升性能
  • 调用newDocumentBuilder()得到builder,再用newDocument()创建空白XML文档

构建XML结构(添加元素、属性、文本)

Document出发,逐层创建节点:

  • createElement("tagName")创建元素节点
  • createTextNode("text")创建文本内容
  • setAttribute("name", "value")为元素添加属性
  • appendChild()insertBefore()组织父子关系(如root.appendChild(child)
  • 根元素必须且只能有一个,通常先appendChild(root)到document

将Document保存为XML文件

DOM树建好后需序列化输出,使用JAXP的Transformer

  • 调用TransformerFactory.newInstance().newTransformer()获取transformer
  • 可设置缩进:transformer.setOutputProperty(OutputKeys.INDENT, "yes"),并设缩进大小(如"{http://xml.apache.org/xslt}indent-amount", "2"
  • DOMSource(sourceDoc)包装document,StreamResult(new File("out.xml"))指定输出目标
  • 执行transform(source, result)完成写入

完整示例(生成简单配置文件)

以下代码生成config.xml,含根节点、子元素及属性:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();

Element root = doc.createElement("config");
doc.appendChild(root);

Element db = doc.createElement("database");
db.setAttribute("type", "mysql");
db.setAttribute("vers

ion", "8.0"); db.appendChild(doc.createTextNode("localhost:3306")); root.appendChild(db); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); transformer.transform(new DOMSource(doc), new StreamResult(new File("config.xml")));


# mysql  # java  # node  # apache  # app  # win  # stream  # 配置文件  # 命名空间  # xml  # 线程  # 对象  # dom  # transform  # database  # transformer  # http  # 再用  # 文档  # 可选  # 关键在于  # 不安全  # 保存为  # 有一个  # 建好  # 需用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何在万网利用已有域名快速建站?  微信小程序 wx.uploadFile无法上传解决办法  打造顶配客厅影院,这份100寸电视推荐名单请查收  Laravel如何实现API速率限制?(Rate Limiting教程)  python中快速进行多个字符替换的方法小结  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何安全更换建站之星模板并保留数据?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何快速搭建高效服务器建站系统?  高防服务器如何保障网站安全无虞?  简历在线制作网站免费版,如何创建个人简历?  如何用VPS主机快速搭建个人网站?  JavaScript如何实现错误处理_try...catch如何捕获异常?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel如何创建自定义Artisan命令?(代码示例)  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何在万网自助建站中设置域名及备案?  中山网站推广排名,中山信息港登录入口?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  大同网页,大同瑞慈医院官网?  Android 常见的图片加载框架详细介绍  javascript中对象的定义、使用以及对象和原型链操作小结  PHP 500报错的快速解决方法  Python正则表达式进阶教程_复杂匹配与分组替换解析  iOS发送验证码倒计时应用  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何在Windows环境下新建FTP站点并设置权限?  phpredis提高消息队列的实时性方法(推荐)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel Session怎么存储_Laravel Session驱动配置详解  如何基于云服务器快速搭建网站及云盘系统?