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


相关推荐: 香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  香港服务器租用费用高吗?如何避免常见误区?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何生成URL和重定向?(路由助手函数)  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何在阿里云部署织梦网站?  米侠浏览器网页背景异常怎么办 米侠显示修复  在Oracle关闭情况下如何修改spfile的参数  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何在阿里云购买域名并搭建网站?  如何利用DOS批处理实现定时关机操作详解  BootStrap整体框架之基础布局组件  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  jQuery 常见小例汇总  javascript基本数据类型及类型检测常用方法小结  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  浅谈Javascript中的Label语句  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  node.js报错:Cannot find module 'ejs'的解决办法  制作电商网页,电商供应链怎么做?  如何在阿里云完成域名注册与建站?  网站优化排名时,需要考虑哪些问题呢?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  高端建站三要素:定制模板、企业官网与响应式设计优化  Android自定义控件实现温度旋转按钮效果  Laravel如何使用Vite进行前端资源打包?(配置示例)  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel如何使用Blade组件和插槽?(Component代码示例)  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Android中AutoCompleteTextView自动提示  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel storage目录权限问题_Laravel文件写入权限设置  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何在建站之星网店版论坛获取技术支持?  如何挑选最适合建站的高性能VPS主机?  Python结构化数据采集_字段抽取解析【教程】  详解阿里云nginx服务器多站点的配置  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)