Документы можно не только читать, но также модифицировать и создавать совершенно новые.
Для создания документа необходимо создать объект каждого класса
(Element, Attribute, Document, Text и др.) и присоединить его к объекту, который в дереве XML-документа находится выше. В данном разделе будет рассматриваться только анализатор JDOM.
Element
Для добавления дочерних элементов, текста или атрибутов в элемент XML-документа нужно использовать один из следующих методов:
Element addContent(Content child) – добавляет дочерний элемент;
Element addContent(int index, Content child) – добавляет дочерний элемент в определенную позицию;
Element addContent(String str) – добавляет текст в содержимое элемента;
Element setAttribute(Attribute attribute) – устанавливает значение атрибута;
Element setAttribute(String name, String value) – также устанавливает значение атрибута;
Element setContent(Content child) – заменяет содержимое этого элемента на элемент, переданный в качестве параметра;
Element setContent(int index, Content child) – заменяет дочерний элемент на определенной позиции элементом, переданным как параметр;
Element setName(String name) – устанавливает имя элемента;
Element setText(String text) – устанавливает текст содержимого элемента.
Text
Класс Text также имеет методы для добавления текста в элемент XML-документа:
void append(String str) – добавляет текст к уже имеющемуся;
void append(Text text) – добавляет текст из другого объекта Text, переданного в качестве параметра;
Text setText(String str) – устанавливает текст содержимого элемента.
Attribute
Методы класса Attribute для установки значения, имени и типа атрибута:
Attribute setAttributeType(int type) – устанавливает тип атрибута;
Attribute setName(String name) – устанавливает имя атрибута;
Attribute setValue(String value) – устанавливает значение атрибута.
Следующий пример демонстрирует создание XML-документа и запись его в файл. Для записи XML-документа используется класс XMLOutputter.
/* пример # 10: создание и запись документа с помощью JDOM:
JDOMLogic.java */
package chapt16.saver.dom;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
import chapt16.entity.Student;
public class JDOMLogic {
public static Document create(List<Student> list) { //создание корневого элемента <studentsnew>
Element root = new Element("studentsnew");
Iterator<Student> studentIterator =
list.iterator();
while (studentIterator.hasNext()) {
Student student = studentIterator.next();
//создание элемента <student> и его содержимого
Element studentElement = new Element("student");
//создание атрибутов и передача им значений
studentElement.setAttribute("login",
student.getLogin());
studentElement.setAttribute("phone",
student.getTelephone());
Element faculty = new Element("faculty");
faculty.setText(student.getFaculty());
//«вложение» элемента <faculty> в элемент <student>
studentElement.addContent(faculty);
Element name = new Element("name");
name.setText(student.getName());
studentElement.addContent(name);
//создание элемента <address>
Element addressElement = new Element("address");
Student.Address address = student.getAddress();
Element country = new Element("country");
country.setText(address.getCountry());
addressElement.addContent(country);
Element city = new Element("city");
city.setText(address.getCity());
addressElement.addContent(city);
Element street = new Element("street");
street.setText(address.getStreet());
// «вложение» элемента <street> в элемент <address>
addressElement.addContent(street);
//«вложение» элемента <address> в элемент <student>