Java&Xml教程(四)使用DOM方式生成XML文件
来源:互联网 发布:手机声音增强软件 编辑:程序博客网 时间:2024/06/05 02:20
在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件。
下面是我们对要生成的XML文件的具体要求:
1.根节点元素为”Employees”,命名空间为”http://www.journaldev.com/employee“,根节点下包含一系列的Employee元素。
2.员工的信息通过Employee节点表示,生成的XML文件有两条员工的信息。
3.每个员工有个”id”属性。
4.Employee 元素有四个子元素- “name”, “age”, “role”, “gender”。
下面是程序代码:
package com.journaldev.xml;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;public class XMLWriterDOM { public static void main(String[] args) { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder; try { dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.newDocument(); //add elements to Document Element rootElement = doc.createElementNS("http://www.journaldev.com/employee", "Employees"); //append root element to document doc.appendChild(rootElement); //append first child element to root element rootElement.appendChild(getEmployee(doc, "1", "Pankaj", "29", "Java Developer", "Male")); //append second child rootElement.appendChild(getEmployee(doc, "2", "Lisa", "35", "Manager", "Female")); //for output to file, console TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); //for pretty print transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); //write to console or file StreamResult console = new StreamResult(System.out); StreamResult file = new StreamResult(new File("/Users/pankaj/emps.xml")); //write data transformer.transform(source, console); transformer.transform(source, file); System.out.println("DONE"); } catch (Exception e) { e.printStackTrace(); } } private static Node getEmployee(Document doc, String id, String name, String age, String role, String gender) { Element employee = doc.createElement("Employee"); //set id attribute employee.setAttribute("id", id); //create name element employee.appendChild(getEmployeeElements(doc, employee, "name", name)); //create age element employee.appendChild(getEmployeeElements(doc, employee, "age", age)); //create role element employee.appendChild(getEmployeeElements(doc, employee, "role", role)); //create gender element employee.appendChild(getEmployeeElements(doc, employee, "gender", gender)); return employee; } //utility method to create text node private static Node getEmployeeElements(Document doc, Element element, String name, String value) { Element node = doc.createElement(name); node.appendChild(doc.createTextNode(value)); return node; }}
需要注意的是代码中创建了两个StreamResult对象,一个是出于调试的目的將XML文件内容输出到控制台中,另一个將XML内容写到文件中。
程序输出的XML内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Employees xmlns="http://www.journaldev.com/employee"><Employee id="1"><name>Pankaj</name><age>29</age><role>Java Developer</role><gender>Male</gender></Employee><Employee id="2"><name>Lisa</name><age>35</age><role>Manager</role><gender>Female</gender></Employee></Employees>
该XML内容没有格式化,如果你需要对XML内容做适当的格式化,参考这篇文章Java中格式化XML
0 0
- Java&Xml教程(四)使用DOM方式生成XML文件
- Java&Xml教程(二)使用DOM方式解析XML文件
- Java&Xml教程(三)使用DOM方式修改XML文件内容
- Java之DOM方式生成XML文件(学习笔记)
- DOM方式生成XML文件
- Java使用DOM生成XML文件
- 使用DOM生成XML文件
- java解析XML文件(DOM方式)
- Java以DOM方式解析生成xml文件或字符串
- JAVA创建XML文件(一)---DOM方式创建XML
- 通过DOM方式生成xml文件
- 利用DOM方式生成XML文件
- Java——DOM方式生成XML
- Java使用Dom方式解析xml文件Demo
- Java生成xml文件的四种方式
- dom生成xml文件
- JAVA创建XML文件(四)---JDOM方式创建XML
- 使用XML DOM生成XML
- 合并字符串
- gflags的使用
- android学习笔记——活动的启动模式
- 对象池 c++11
- 面试宝典:破解最难回答的23个问题及8大面试通关考题
- Java&Xml教程(四)使用DOM方式生成XML文件
- ZZULIOJ 1816: 矩形 【矩形重叠面积的计算(区分相离与相交)】
- 如何选择正确的HTTP状态码
- CSDN论坛积分等级制度
- 185 Which two client requests are captured during database replay Capture? (Choose two) A. Flashback
- 简单典型贪心---(解题报告)HDU2037---今年暑假不AC
- iOS 遇到过的bug(未完待续)
- 定义工具类中函数随时打开某Activity
- ros/ubuntu开机自启动节点