XML DOM описывает каким образом необходимо получать, изменять, добавлять и удалять XML элементы.
Согласно DOM:
- все, что содержится внутри XML документа, является узлом;
- весь документ представляется узлом документа;
- каждый XML элемент – узел элемента;
- текст внутри XML элементов - текстовый узел;
- каждый атрибут - узел атрибута;
- комментарии - узлы комментариев.
XML документ в соответствии с моделью XML DOM представляется как дерево из узлов, при этом:
- Все узлы дерева находятся в определенных отношениях друг с другом.
- Все узлы доступны через дерево. Их содержимое может быть изменено, удалено; новые элементы могут быть добавлены в дерево.
- Дерево начинается с корневого узла и разветвляется вниз вплоть до текстовых узлов на самом низшем уровне дерева.
- Все узлы находятся в иерархических отношениях между собой.
Эти отношения описываются с помощью понятий родитель, дочерний и потомок (все дочерние на одном уровне).
Альтернативным интерфейсом для обработки XML документов является SAX.
SAX ( Simple API for XML ) - прикладной программный интерфейс для парсера с последовательным доступом к XML. Этот интерфейс предоставляет механизм чтения данных из XML документа.
SAX парсер является поточным и управляемым событиями. Задачей пользователя SAX API заключается в описании методов, вызываемых событиями, возникающими при анализе документа.
Такими событиями могут быть следующие:
- текстовый узел;
- узел элемента XML;
- инструкция обработки XML;
- комментарий XML.
События вызываются появлением как открывающего тэга, так и закрывающего тэга любого из этих элементов документа. Атрибут XML также рассматривается как событие.
Анализ документа является однонаправленным (т.е. без возвратов по дереву).
В отличие от DOM формальной спецификации для SAX не существует. В качестве нормативной рассматривается Java реализация SAX.
Следует отметить следующие достоинства и недостатки SAX.
Достоинства:
- Затраты памяти существенно меньше (зависит от максимальной глубины дерева документа и количества атрибутов в узле элемента), чем в случае DOM (требуется хранить в памяти все дерево документа).
- Скорость работы выше за счет сокращения затрат времени на выделение памяти для элементов дерева в случае DOM.
- Потоковое чтение данных с диска в случае DOM невозможно. Если для размещения всего документа в памяти недостаточно места, то использование SAX является безальтернативным.
Недостатки:
- Процедура проверки правильности предполагает доступ ко всему документу одновременно.
- Это также требуется и в случае XSLT преобразования