Java&Xmlチュートリアル(四)DOM方式でXMLファイルを生成する
10594 ワード
前のチュートリアルでは、DOM解析を使用してXMLファイルの内容を読み取り、変更する方法を学びました.今日は、DOM解析メカニズムを使用してXMLファイルを生成する方法を学びます.次に、生成するXMLファイルの具体的な要件を示します.1.ルートノード要素は「Employees」、ネーミングスペースは「」です.http://www.journaldev.com/employee「ルートノードの下には一連のEmployee要素が含まれています.2.従業員の情報はEmployeeノードで表され、生成されたXMLファイルには従業員の情報が2つあります.3.従業員ごとに「id」属性があります.4.Employee要素には、「name」、「age」、「role」、「gender」の4つのサブ要素があります.次はプログラムコードです.
コードには、デバッグの目的でXMLファイルのコンテンツをコンソールに出力し、XMLコンテンツをファイルに書き込む2つのStreamResultオブジェクトが作成されていることに注意してください.プログラム出力のXML内容:
このXMLコンテンツはフォーマットされていません.XMLコンテンツを適切にフォーマットする必要がある場合は、JavaでのXMLのフォーマットを参照してください.
転載先:https://www.cnblogs.com/lanzhi/p/6468393.html
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;
}
}
コードには、デバッグの目的でXMLファイルのコンテンツをコンソールに出力し、XMLコンテンツをファイルに書き込む2つのStreamResultオブジェクトが作成されていることに注意してください.プログラム出力のXML内容:
<Employees xmlns="http://www.journaldev.com/employee">
<Employee id="1">
<name>Pankajname>
<age>29age>
<role>Java Developerrole>
<gender>Malegender>
Employee>
<Employee id="2">
<name>Lisaname>
<age>35age>
<role>Managerrole>
<gender>Femalegender>
Employee>
Employees>
このXMLコンテンツはフォーマットされていません.XMLコンテンツを適切にフォーマットする必要がある場合は、JavaでのXMLのフォーマットを参照してください.
転載先:https://www.cnblogs.com/lanzhi/p/6468393.html