Heim >Backend-Entwicklung >XML/RSS-Tutorial >Java&Xml-Tutorial (4) Verwenden von DOM zum Generieren von XML-Dateien
Im vorherigen Tutorial haben wir gelernt, die DOM-Parsing-Methode zum Lesen und Ändern des Inhalts von XML-Dateien zu verwenden. Heute lernen wir, wie man den DOM-Parsing-Mechanismus zum Generieren von XML-Dateien verwendet.
Das Folgende sind unsere spezifischen Anforderungen an die zu generierende XML-Datei:
1. Das Wurzelknotenelement ist „Employees“ und der Namespace ist „http://www.php.cn“. /" enthält der Wurzelknoten eine Reihe von Employee-Elementen.
2. Mitarbeiterinformationen werden durch den Mitarbeiterknoten dargestellt, und die generierte XML-Datei enthält zwei Mitarbeiterinformationen.
3. Jeder Mitarbeiter hat ein „id“-Attribut.
4. Das Employee-Element hat vier Unterelemente – „Name“, „Alter“, „Rolle“, „Geschlecht“.
Das Folgende ist der Programmcode:
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; } }
Es ist zu beachten, dass im Code zwei StreamResult-Objekte erstellt werden. Eines dient dazu, den Inhalt der XML-Datei zu Debugging-Zwecken an die Konsole auszugeben. und der andere ist, den Inhalt in die Datei zu schreiben.
Der vom Programm ausgegebene XML-Inhalt:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Employees xmlns=" <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>
Der XML-Inhalt ist nicht formatiert. Wenn Sie den XML-Inhalt richtig formatieren müssen, lesen Sie diesen Artikel Formatieren von XML in Java
Im vorherigen Tutorial haben wir gelernt, die DOM-Analyse zum Lesen und Ändern des Inhalts von XML-Dateien zu verwenden. Heute lernen wir, wie man den DOM-Analysemechanismus zum Generieren von XML-Dateien verwendet.
Das Folgende sind unsere spezifischen Anforderungen an die zu generierende XML-Datei:
1. Das Wurzelknotenelement ist „Mitarbeiter“, der Namespace ist „http://www.php.cn/“ und der Stamm Der Knoten enthält eine Reihe von Employee-Elementen.
2. Mitarbeiterinformationen werden durch den Mitarbeiterknoten dargestellt, und die generierte XML-Datei enthält zwei Mitarbeiterinformationen.
3. Jeder Mitarbeiter hat ein „id“-Attribut.
4. Das Employee-Element hat vier Unterelemente – „Name“, „Alter“, „Rolle“, „Geschlecht“.
Das Folgende ist der Programmcode:
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; } }
Es ist zu beachten, dass im Code zwei StreamResult-Objekte erstellt werden. Eines dient dazu, den Inhalt der XML-Datei zu Debugging-Zwecken an die Konsole auszugeben. und der andere ist, den Inhalt in die Datei zu schreiben.
XML-Inhaltsausgabe durch das Programm:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Employees xmlns=" <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>
Das Obige ist der Inhalt des Java&Xml-Tutorials (4) unter Verwendung der DOM-Methode zum Generieren von XML-Dateien. Für weitere verwandte Inhalte achten Sie bitte auf PHP-Chinesisch Website (www.php.cn) !