Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
26-30.docx
Скачиваний:
5
Добавлен:
30.08.2019
Размер:
219.91 Кб
Скачать

28 Структура агрегированных объектов документа (dom).

DOM - это общий способ представления иерархических документов, рекомендация W3C к представлению и методу доступа (фактически сокращение Document Object Model совершенно не ссылается на XML). Архитектурно DOM основан на узловом представлении, то есть объектами представляются элементы, а не связи между ними. В основе иерархии стоит класс Узла - в его функции входит двусторонняя связь по вертикали (с родительским узлом) и по горизонтали (с сестринскими узлами). У каждого узла не более одного сестринского элемента, предшествующего и следующего за ним.

От узла происходят Элементы - это такие узлы, которые дополнительно содержат два списка: список дочерних элементов и список атрибутов. Атрибуты - это пары ключ-значение. Имена ключей должны быть уникальными, но их порядок не имеет значения.

О собый случай элемента - Документ, который всегда является корневым элементом. Документ имеет уникальное имя и не имеет родительского элемента. Все остальные узлы имеют родительский документ, причем только один.

От узла происходят также два листовых (не имеющих дочерних) типа узла - Текст и Комментарий. В списке дочерних элементов элемента могут чередоваться узлы других элементов, текста и комментарии в любом порядке.

Помимо классов, над ними определены методы - типично "добавить узел", "удалить узел", "добавить атрибут", "удалить атрибут" и так далее.

Недостаток DOM - достаточно большие накладные расходы на обработку каждого элемента; они могут составлять даже 1000% и более от нетто данных. При обработке больших документов это может стать критическим параметром. Кроме того, некоторые операции с DOM-представлением (такие как поиск) будут связаны со сложным обходом дерева, и в общем случае они медленнее линейного поиска.

Метод доступа через DOM удобен, когда структура документа должна (или может) быть доступна в целом и легко модифицироваться - например так, как это происходит в документе Word или при формировании страницы DHTML.

SAX, Simple API for XML - это де-факто стандартный метод разбора, завязанный конкретно на XML. В основе лежит обработка событий - то есть при открытии и закрытии каждого элемента, получении текста и так далее ваша программа получает управление, сопровождаемое параметрами события. Для своей работы этот метод не требует использования больших хранилищ данных или иерархий объектов в памяти, так что можно обрабатывать очень большие объемы данных на ограниченных ресурсах (как пример практически бесконечного XML-потока представьте датчик сигналов, генерирующий бесконечную последовательность XML-элементов).

Кроме того, SAX-разбор происходит асинхронно, то есть программа не должна ждать завершающего тега для отработки уже полученных. Последнее может пригодиться, например, для отображения записей SQL-запроса еще до того, как все они будут получены. Другое применение - обрыв сеанса, допустим при нахождении одной нужной записи из миллиона.

Недостаток SAX - необходимость хранения состояния в процессе разбора XML-потока, то есть в случае со сложной и/или недетерминированной структурой придется частично реконструировать узловую модель для отслеживания уровней вложения.

SAX и DOM подходы иногда сочетают между собой. Так, веб-браузер отображает элементы в процессе получения по методу SAX, но после получения документа строит его DOM-модель для DHTML-доступа в терминах иерархии объектов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]