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

Пример записи XML-файла DOM из объекта

Пример XML-файла для записи DOM, пример JSON, учебник по JSON, Документ JDOM, Элемент, Пространство имен, XMLOutputter, Форматирование XML, печать, компактный пример кода

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

В последнем уроке мы изучили основы Java JDOM и то, как мы можем считывать XML-файл в объект. В этом уроке мы узнаем о примере записи XML-файла DOM.

DOM Запись XML-файла

Документ JDOM предоставляет методы для простого создания элементов и атрибутов. XMLOutputter класс может использоваться для записи документа в любой выходной поток или объект записи.

Для этого примера мы создадим список объектов Employee, а затем запишем его в XML-файл.

package com.journaldev.xml;

public class Employee {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String role;
    
    public Employee(){}
    
    public Employee(int id, String name, int age, String gender, String role){
        this.id=id;
        this.age=age;
        this.name=name;
        this.gender=gender;
        this.role=role;
    }
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    
}

Мы установим идентификатор сотрудника в качестве атрибута элемента Employee и установим пространство имен для сотрудников корневого элемента.

package com.journaldev.xml.jdom;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.Namespace;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

import com.journaldev.xml.Employee;

public class JDOMXMLWriter {

    public static void main(String[] args) throws IOException {
        List empList = new ArrayList<>();
        empList.add(new Employee(1, "Pankaj",25,"Male","Java Developer"));
        empList.add(new Employee(2, "Mona",34,"Female","Manager"));
        empList.add(new Employee(3, "Dave",45,"Male","Support"));
        
        String fileName = "employees.xml";
        writeFileUsingJDOM(empList, fileName);
    }

    private static void writeFileUsingJDOM(List empList, String fileName) throws IOException {
        Document doc = new Document();
        doc.setRootElement(new Element("Employees",  Namespace.getNamespace("https://www.journaldev.com/employees")));
        for(Employee emp : empList){
            Element employee = new Element("Employee");
            employee.setAttribute("id",""+emp.getId());
            employee.addContent(new Element("age").setText(""+emp.getAge()));
            employee.addContent(new Element("name").setText(emp.getName()));
            employee.addContent(new Element("gender").setText(emp.getGender()));
            employee.addContent(new Element("role").setText(emp.getRole()));
            doc.getRootElement().addContent(employee);
        }
        //JDOM document is ready now, lets write it to file now
        XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
        //output xml to console for debugging
        //xmlOutputter.output(doc, System.out);
        xmlOutputter.output(doc, new FileOutputStream(fileName));
    }

}

Когда мы запускаем пример программы для записи XML-файла выше DOM, мы получаем следующий XML-файл.



  
    25
    Pankaj
    Male
    Java Developer
  
  
    34
    Mona
    Female
    Manager
  
  
    45
    Dave
    Male
    Support
  

Обратите внимание, что элементы Employee имеют пустое пространство имен, поскольку мы задаем пространство имен только для корневого элемента. Если вам нужно одинаковое пространство имен для всех элементов, вам необходимо создать их специально с помощью конструктора с аргументом пространства имен.

Также проверьте использование Формат класса для красивой печати XML-файла. Мы также можем использовать его для вывода XML в компактном и необработанном формате.