Простой Python. Современный стиль программирования (Любанович) - страница 125

Самый простой способ проанализировать XML в Python — использовать библиотеку ElementTree. Рассмотрим небольшую программу, которая анализирует файл menu.xml и выводит на экран некоторые теги и атрибуты:

>>>> import xml.etree.ElementTree as et

>>>> tree = et.ElementTree(file='menu.xml')

>>>> root = tree.getroot()

>>>> root.tag

>'menu'

>>>> for child in root:

>…·····print('tag:', child.tag, 'attributes:', child.attrib)

>·····for grandchild in child:

>…·········print('\ttag:', grandchild.tag, 'attributes:', grandchild.attrib)

>…

>tag: breakfast attributes: {'hours': '7-11'}

>····tag: item attributes: {'price': '$6.00'}

>····tag: item attributes: {'price': '$4.00'}

>tag: lunch attributes: {'hours': '11-3'}

>····tag: item attributes: {'price': '$5.00'}

>tag: dinner attributes: {'hours': '3-10'}

>····tag: item attributes: {'price': '8.00'}

>>>> len(root)·····# количество разделов menu

>3

>>>> len(root[0])··# количество элементов breakfast

>2

Для каждого элемента вложенных списков tag — это строка тега, а attrib — это словарь его атрибутов. Библиотека ElementTree имеет множество других способов поиска данных, организованных в формате XML, модификации этих данных и даже записи XML-файлов. Все детали изложены в документации библиотеки ElementTree (http://bit.ly/elementtree).

Среди других библиотек для работы с XML в Python можно отметить следующие:

• xml.dom. The Document Object Model (DOM), знакомая разработчикам на JavaScript, представляет веб-документы как иерархические структуры. Этот модуль загружает XML-файл в память целиком и позволяет вам получать доступ ко всем его частям;

• xml.sax. Simple API for XML, или SAX, разбирает XML на ходу, поэтому он не загружает в память сразу весь документ. Он может стать хорошим выбором, если вам нужно обработать очень большие потоки XML.

HTML

Огромные объемы данных сохраняются в формате гипертекстового языка разметки (Hypertext Markup Language, HTML), это основной формат документов в сети Интернет. Проблема заключается в том, что значительная часть этих документов не соответствует правилам формата HTML, поэтому его трудно разобрать. Помимо этого, большая часть HTML предназначена для того, чтобы форматировать выводимую информацию, а не обмениваться данными. Поскольку эта глава предназначена для того, чтобы описать относительно хорошо определенные форматы данных, я вынес рассмотрение HTML в главу 9.

JSON

JavaScript Object Notation (JSON) (http://www.json.org/) стал очень популярным форматом обмена данными, вышедшим за пределы языка JavaScript. Формат JSON является частью языка JavaScript и часто содержит легальный с точки зрения Python синтаксис. Он хорошо подходит Python, что делает его хорошим выбором при определении формата данных для обмена между программами. Вы увидите множество примеров использования JSON при веб-разработке в главе 9.