Автор оригинала: Pankaj Kumar.
Ранее мы узнали, как читать XML-файл и как редактировать XML-файл на java с помощью DOM-анализатора, сегодня мы узнаем, как написать XML-файл на java с помощью DOM-анализатора.
Вот требования к нашему XML-файлу.
- Корневым элементом будет “Сотрудники” с пространством имен “https://www.journaldev.com/employee”. Этот корневой элемент будет содержать список сотрудников.
- Информация о сотруднике будет записана в элементе “Сотрудник”. В XML-файле будет информация о двух сотрудниках.
- У каждого сотрудника есть атрибут с именем “идентификатор”
- Элемент сотрудник будет иметь четыре элемента – “имя”, “возраст”, “роль”, “пол”.
Вот программа java для вышеуказанного требования.
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("https://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 из вышеприведенной программы.
Pankaj 29 Java Developer Male Lisa 35 Manager Female
XML не отформатирован, если вы хотите, чтобы XML был правильно отформатирован, прочитайте формат XML на java .