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 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)


