Работа с XML файлами

Основная идея XML – это текстовое представление с помощью тегов, структурированных в виде дерева данных. Древовидная структура хорошо описывает бизнес-объекты, конфигурацию, структуры данных и т.п. Данные в таком формате легко могут быть как построены, так и разобраны на любой системе с использованием любой технологии – для этого нужно лишь уметь работать с текстовыми документами.

Существуют разные библиотеки для работы с XML документами. Мы остановимся на средствах, которые входят в стандартную JDK, а именно на DOM — Document Object Model.

Так что же такое DOM? Судя из названия это есть объектная модель документа. XML документ представляет собой набор тегов — узлов. Каждый узел может иметь неограниченное количество дочерних узлов. Каждый дочерний тоже может содержать много-много потомков или не содержать их вовсе. Так вот DOM представляет собой всё это дерево в виде специальных объектов Node. Каждый Node соответствует своему XML-тегу. Таким образом, получается некое дерево. На самой вершине этой иерархии находится Document.

Для того, чтобы получить объект Document для нашего XML-файла необходимо выполнить следующий код.

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
f.setValidating(false);
DocumentBuilder builder = f.newDocumentBuilder();
Document doc = builder.parse(new File("test.xml"));

Можно получить список дочерних узлов при помощи метода getChildNodes.

NodeList methodNodes = node.getChildNodes();

Вот так можно пробежаться по всем дочерним узлам текущего узла:

NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
     Node node = children.item(i);
}

С помощью getAttributes получается NamedNodeMap, который содержит атрибуты узла. Вот так можно получить значение атрибута «name»:

NamedNodeMap attributes = node.getAttributes();
Node nameAttrib = attributes.getNamedItem("name");
String name = nameAttrib.getNodeValue();

Вопрос 1.

В чем преимущество хранения данных в XML-формате, перед обычным текстовым форматом?

Вопрос 2.

Каким образом можно записать данные какого-либо объекта в XML-файл?

Last updated