이전 튜토리얼에서는 DOM 구문 분석 방법을 사용하여 XML 파일의 내용을 읽고 수정하는 방법을 배웠습니다. 오늘은 DOM 구문 분석 메커니즘을 사용하여 XML 파일을 생성하는 방법을 알아봅니다.
다음은 생성할 XML 파일에 대한 특정 요구 사항입니다.
1. 루트 노드 요소는 "Employees"이고 네임스페이스는 "http://www.php.cn"입니다. /" , 루트 노드에는 일련의 Employee 요소가 포함되어 있습니다.
2. 직원 정보는 Employee 노드로 표현되며 생성된 XML 파일에는 두 가지 직원 정보가 있습니다.
3. 각 직원은 "id" 속성을 갖습니다.
4. Employee 요소에는 "이름", "나이", "역할", "성별"이라는 4개의 하위 요소가 있습니다.
다음은 프로그램 코드입니다.
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=" <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 형식 지정
문서를 참조하세요. 이전 튜토리얼에서는 DOM 구문 분석을 사용하여 XML 파일의 내용을 읽고 수정하는 방법을 배웠습니다. 오늘은 DOM 구문 분석 메커니즘을 사용하여 XML 파일을 생성하는 방법을 배웁니다.
다음은 생성할 XML 파일에 대한 구체적인 요구 사항입니다.
1. 루트 노드 요소는 "Employees"이고 네임스페이스는 "http://www.php.cn/"이며 루트는 노드에는 일련의 Employee 요소가 포함되어 있습니다.
2. 직원 정보는 Employee 노드로 표현되며 생성된 XML 파일에는 두 가지 직원 정보가 있습니다.
3. 각 직원은 "id" 속성을 갖습니다.
4. Employee 요소에는 "이름", "나이", "역할", "성별"이라는 4개의 하위 요소가 있습니다.
다음은 프로그램 코드입니다.
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=" <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>
위는 DOM 메소드를 사용하여 XML 파일을 생성하는 Java&Xml 튜토리얼(4)의 컨텐츠입니다. 더 많은 관련 컨텐츠를 보려면 PHP 중국어 웹사이트를 참고하세요. (www.php.cn)!