Рубрики
Без рубрики

Как написать XML-файл на Java (DOM-анализатор)

Ранее мы узнали, как читать XML-файл и как редактировать XML-файл на java с помощью синтаксического анализатора DOM, сегодня мы узнаем, как написать XML-файл на java с помощью DOM

Автор оригинала: Pankaj Kumar.

Ранее мы узнали, как читать XML-файл и как редактировать XML-файл на java с помощью DOM-анализатора, сегодня мы узнаем, как написать XML-файл на java с помощью DOM-анализатора.

Вот требования к нашему XML-файлу.

  1. Корневым элементом будет “Сотрудники” с пространством имен “https://www.journaldev.com/employee”. Этот корневой элемент будет содержать список сотрудников.
  2. Информация о сотруднике будет записана в элементе “Сотрудник”. В XML-файле будет информация о двух сотрудниках.
  3. У каждого сотрудника есть атрибут с именем “идентификатор”
  4. Элемент сотрудник будет иметь четыре элемента – “имя”, “возраст”, “роль”, “пол”.

Вот программа 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 .