DOM方式生成 XML 文件
首先创建 DOM 树 的部分:
创建 DocumentBuilderFactry 对象
//创建一个 DocumentBuilderFactory 对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
创建 DocumentBuilder 对象
//创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder();di
创建 Document 对象
//创建 Document 对象 Document document = db.newDocument();
创建根节点
//创建根节点
Element school = document.createElement("school");
创建子节点
//创建子节点
Element student = document.createElement("student");
创建 student 的子节点
//创建student的子节点
Element name = document.createElement("name");
Element age = document.createElement("age");
Element address = document.createElement("address");
给 student 的子节点添加文内容
//给 name 节点添加 文本内容
name.setTextContent("小明");
age.setTextContent("18");
address.setTextContent("北京市海定区五道口");
把 student 的子节点添加到 student 节点 下
//把子节点 添加到 student 节点下 student.appendChild(name); student.appendChild(age); student.appendChild(address);
向 student 节点 添加属性和属性值
//向 studet 节点添加属性和属性值
student.setAttribute("id", "1");
向根节点下添加 student 节点
//向 school 添加子节点 school.appendChild(student);
将根节点添加到 dom 树中
//将 根节点(已经包含子节点 )添加到dom树中 document.appendChild(school);
DOM 树生成完事了
接着将 DOM 树转换成 XML 文件
创建 TransformerFactory 对象
//创建 TransformerFactory 对象 TransformerFactory tff = TransformerFactory.newInstance();
创建 Transformer 对象
//创建 Transformer 对象 Transformer tf = tff.newTransformer();
使用 Transformer 的 transform 方法把 DOM 树转换成 XML 文件
//使用 Transformer 的 transform 方法把Dom树转换成 XML 文件
tf.transform(new DOMSource(document), new StreamResult(new File("School_01.xml")));
生成 XML 文件完事
运行结果:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><school><student id="1"><name>小明</name><age>18</age><address>北京市海定区五道口</address></student></school>
我们可以看到生成 XML 文件成功了,但是生成的内容是一整行,没有自动换行,不易读
设置XML 文件自动换行
//设置生成的 XML 文件自动换行 tf.setOutputProperty(OutputKeys.INDENT, "yes");
再次运行结果,可以看到生成的 XML 文件自动换行了:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <school> <student id="1"> <name>小明</name> <age>18</age> <address>北京市海定区五道口</address> </student> </school>
此外,可以看到,在 XML 文件申明部分中,有 standalone 这个属性,该属性表示当前 XML 是否有相对应的 dtd 或 scheam 文件作为其说明文档。
若属性值为“yes”,则代表当前 XM了 文件没有 dtd 或 schema 文件作为其说明文档。
由于没有用到 dtd 或 schema ,所以可以 通过 Document 的 setXmlStandalone()方法将该属性隐藏掉。
//隐藏 XML文件 standalone 属性 document.setXmlStandalone(true);
再次测试可以发现已经没有该属性了。
完整代码
try {
//创建一个 DocumentBuilderFactory 对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//创建DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder();
//创建 Document 对象
Document document = db.newDocument();
//隐藏 XML文件 standalone 属性
document.setXmlStandalone(true);
//创建根节点
Element school = document.createElement("school");
//创建子节点
Element student = document.createElement("student");
//创建student的子节点
Element name = document.createElement("name");
Element age = document.createElement("age");
Element address = document.createElement("address");
//给 name 节点添加 文本内容
name.setTextContent("小明");
age.setTextContent("18");
address.setTextContent("北京市海定区五道口");
//把子节点 添加到 student 节点下
student.appendChild(name);
student.appendChild(age);
student.appendChild(address);
//向 studet 节点添加属性和属性值
student.setAttribute("id", "1");
//向 school 添加子节点
school.appendChild(student);
//将 根节点(已经包含子节点 )添加到dom树中
document.appendChild(school);
//..将 dom树转换为 XML文件
//创建 TransformerFactory 对象
TransformerFactory tff = TransformerFactory.newInstance();
//创建 Transformer 对象
Transformer tf = tff.newTransformer();
//设置生成的 XML 文件自动换行
tf.setOutputProperty(OutputKeys.INDENT, "yes");
//使用 Transformer 的 transform 方法把Dom树转换成 XML 文件
tf.transform(new DOMSource(document), new StreamResult(new File("School_01.xml")));
} catch (ParserConfigurationException e) {
e.printStackTrace();
}catch (TransformerException e) {
e.printStackTrace();
}
}
今天的文章java 生成xml文件分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30285.html



