Автор оригинала: 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 .