电话
400 9058 355
Java中创建XML文件需用DOM解析:先通过DocumentBuilderFactory获取DocumentBuilder,再创建Document;接着用createElement、createTextNode等构建节点并组织层级;最后用Transformer将DOM树序列化为XML文件。
Java中创建XML文件常用DOM解析方式,核心是通过DocumentBuilder生成空文档,再用Document对象构建节点、设置内容,最后用Transformer写入文件。关键在于正确获取DocumentBuilder实例,避免直接new——必须通过DocumentBuilderFactory创建。
不能直接实例化

DocumentBuilder,需通过工厂类获取线程不安全但轻量的builder:
DocumentBuilderFactory.newInstance()获取工厂setValidating(false)、setNamespaceAware(false))以提升性能newDocumentBuilder()得到builder,再用newDocument()创建空白XML文档从Document出发,逐层创建节点:
createElement("tagName")创建元素节点createTextNode("text")创建文本内容setAttribute("name", "value")为元素添加属性appendChild()或insertBefore()组织父子关系(如root.appendChild(child))appendChild(root)到documentDOM树建好后需序列化输出,使用JAXP的Transformer:
TransformerFactory.newInstance().newTransformer()获取transformertransformer.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("version", "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")));
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...