Анализ с помощью парсера DOM

analiz s pomoshhju parsera dom Текст и язык

Модель DOM синтаксического анализа XML является, пожалуй, наиболее простой для понимания — мы просто выполняем обход дерева объектов, полученного в результате анализа, — но она может оказаться менее эффективной при анализе больших документов, когда документ анализируется заранее и целиком сохраняется в памяти. Кроме того, модель DOM поддерживает произвольный доступ к частям документов, вложенные циклы по известным структурам и рекурсивный обход произвольно вложенных фрагментов, тогда как модель SAX ограничивается линейной процедурой анализа. В примере 19.11 приводится сценарий, реализующий анализ на основе модели DOM, эквивалентный реализации парсера SAX из предыдущего раздела.

Пример 19.11. PP4E\Lang\Xml\dombook.py

Анализ XML: модель DOM позволяет получить представление всего документа

в виде объекта, доступного приложению для обхода

import pprint import xml.dom.minidom from xml.dom.minidom import Node

doc = xml.dom.minidom.parse("books.xml") # загрузить документ в объект # для предварительного анализа mapping = {}

for node in doc.getElementsByTagName("book"): # обход объекта DOM

isbn = node.getAttribute("isbn") # с применением DOM API

L = node.getElementsByTagName("title") for node2 in L:

title = "" for node3 in node2.childNodes:

if node3.nodeType == Node.TEXT_NODE: title += node3.data

mapping[isbn] = title

#  словарь mapping теперь содержит те же значения, что и в примере

#  использования SAX

pprint.pprint(mapping)

Этот сценарий выводит те же результаты, которые были получены при использовании парсера SAX. Однако здесь они были получены в результате обхода объекта дерева документа после завершения анализа и за счет вызова методов и обращения к атрибутам, определяемых спецификациями стандарта DOM. В этом заключается одновременно и достоинство, и недостаток модели DOM — его прикладной интерфейс не зависит от конкретного языка программирования, но он может показаться неинтуитивным и слишком многословным некоторым программистам на Python, приученным к более простым моделям:

C:\\PP4E\Lang\Xml> python dombook.py

подпись: {'0-596-00128-2'
'0-596-00797-3'
'0-596-10046-9'
'0-596-15806-8'
'0-596-15808-4'
'0-596-15810-6'
‘Python & XML’,

‘Python Cookbook, 2nd Edition’,

‘Python in a Nutshell, 2nd Edition’,

‘Learning Python, 4th Edition’,

‘Python Pocket Reference, 4th Edition’, ‘Programming Python, 4th Edition’}

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий