栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 人工智能 > NLP

Java&Xml教程(四)使用DOM方式生成XML文件

NLP 更新时间:发布时间: 百科书网 趣学号

在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件。

下面是我们对要生成的XML文件的具体要求:
1.根节点元素为”Employees”,命名空间为”http://www.iotsi.net/“,根节点下包含一系列的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内容:

Pankaj29Java DeveloperMaleLisa35ManagerFemale

该XML内容没有格式化,如果你需要对XML内容做适当的格式化,参考这篇文章Java中格式化XML

在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件。
下面是我们对要生成的XML文件的具体要求:
1.根节点元素为”Employees”,命名空间为”http://www.iotsi.net/“,根节点下包含一系列的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内容:

Pankaj29Java DeveloperMaleLisa35ManagerFemale

以上就是Java&Xml教程(四)使用DOM方式生成XML文件的内容,更多相关内容请关注PHP中文网(www.iotsi.net)!

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/794841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号