Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 5.ppt
Скачиваний:
106
Добавлен:
17.04.2018
Размер:
175.62 Кб
Скачать

Работа с XML на платформе Java

Разбор (анализ) документа

DOM (Document Object Model) — считывает документ и представляет его в виде древовидной структуры

SAX (Simple API for XML) — генерирует события по мере чтения документа

Разбор документа

Создание объекта анализатора

DocumentBuildFactory factory = DocumentBuildFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Разбор документа:

File f = ...;

Document doc = builder.parse(f);

Пакеты: java.xml.* org.w3c.dom.*;

Иерархия интерфейсов DOM

Node

Attr

Charact

Document

Document

Element

Notation

er

Type

 

 

 

 

 

Data

 

 

 

 

Text

Comme

Document

Entity

Entity

nt

Fragment

Reference

 

 

CDAT

 

 

 

 

A

 

 

 

Processing

sectio

 

 

 

 

 

 

Instruction

n

 

 

 

 

 

 

 

Начало анализа

Element root = doc.getDocumentElement();

XML пример:

<?xml version="1.0">

<font>

...

</font>

root — объект-элемент «font». Получение тега элемента:

String tagName = root.getTagName(); // «font»

Перечисление суб-элементов

NodeList children = root.getChildNodes();

for (int i = 0; i < children.getLength(); i+

+)

{

Node child = children.item(i);

...

}

Перечисление суб-элементов

XML:

<font>

<name>Helvetica</name>

<size>36</size>

</font>

У элемента <font> 5(!) суб-элементов:

Разделитель (перевод строки) между <font> и <name>

Элемент name

Разделитель между </name> и <size>

Элемент <size>

Разделитель между </size> и </font>

Перечисление суб-элементов

NodeList children = root.getChildNodes();

for (int i = 0; i < children.getLength(); i+

+)

{

Node child = children.item(i); if (child instance of Element) {

Element childElement = (Element) child;

...

}

}

Текстовое содержимое элемента

. . .

Element childElement = (Element) child;

Text textNode = childElement.getFirstChild();

String text = textNode.getData().trim();

...

Перечисление атрибутов

NamedNodeMap attributes = element.getAttributes();

for (int i = 0; i < attributes.getLength(); i++)

{

Node attributeNode = attributes.item(i);

String name = attributeNode.getNodeName(); String value = attributeNode.getNodeValue();

}

или:

String unit = element.getAttribute("unit");

Соседние файлы в папке лекции