Анимация
JavaScript
|
Главная Библионтека 29.5 xml.sax - SAX2 интерфейс к синтаксическим анализаторам XML-документов Этот модуль доступен, начиная с версии 2.0 и реализует SAX (Simple API for XML, простой программный интерфейс для XML) интерфейс. Модуль xml.sax определяет следующие функции: make parser( [parser list\) Создает и возвращает объект с SAX интерфейсом (экземпляр xml.sax.xmlreader.XMLReader или производного от него класса), реализующий синтаксический анализ XML-документа. Для этого используется первый найденный анализатор. Поиск модулей синтаксических анализаторов производится в списке parser list (список имен модулей), если он задан, затем в списке модулей по умолчанию. parse( filename or stream, handler [, error handler\) Создает объект, реализующий синтаксический анализ XML-документа, p = expat.ParserCreateO p.returns unicode = 0 p.StartElementHandler = start element p.EndElementHandler = end element p.CharacterDataHandler = char data p.Parse("""\ <?xml version="1.0"?> <parent id="top"> <child1 name="paul">Text goes here</child1> <child2 name="fred">More text</child2> </parent>""") Вывод этой программы будет следующим: Начало элемента: parent {id: top} Начало элемента: child1 {name: paul} Символьные данные: Text goes here Конец элемента: child1 Символьные данные: \012 Начало элемента: child2 {name: fred} Символьные данные: More text Конец элемента: child2 Символьные данные: \012 Конец элемента: parent 29.5. xml.sax - SAX2 интерфейс к синтаксическим ... 393 и использует его для анализа файла filename or stream. Аргумент filename or stream должен быть файловым (или подобным) объектом или строкой с именем файла. Аргумент handler должен быть экземпляром класса ContentHandler, реализующим обработку событий для содержимого документа. С помощью аргумента error handler (должен быть экземпляром класса ErrorHandler) Вы можете задать способ обработки ошибок, по умолчанию для всех ошибок будет генерироваться исключение SAXParseException. parseString (string, handler [, error handler]) Работает аналогично функции parse(), но обрабатывает XML-документ, содержащийся в строке string. Типичное SAX-приложение состоит из объекта, реализующего чтение и синтаксический анализ документа, преобразуя его в поток SAX-событий, объектов-обработчиков событий и объекта, представляющего сам XML-документ. Для всех этих объектов существенными являются только интерфейсы, формально представленные различными классами. Классы InputSource, Locator, + AttributesImpl и XMLReader определены в модуле xml.sax.xmlreader, интерфейсные классы обработчиков событий - в модуле xml.sax.handler. Для удобства модуль xml.sax импортирует в свое глобальное пространство имен классы InputSource, ContentHandler и ErrorHandler. Модуль также определяет иерархию исключений: SAXException Этот класс является базовым для всех исключений модуля. Экземпляры SAXException и производных от него классов заключают в себе сообщение об ошибке и, часто, реальное исключение, сгенерированное выбранным синтаксическим анализатором. Эта информация доступна через методы исключения getMessage() и getException() соответственно (последний может возвращать None). SAXParseException Исключения этого класса генерируются при обнаружении синтаксических ошибок в анализируемом XML-документе. Экземпляры класса SAXParseException имеют дополнительные методы getColumnNumber() , getLineNumber() , getPublicId() и getSystemId() , которые возвращают, соответственно, позицию в строке и номер строки, в которой возникла ошибка, и публичный и системный идентификаторы сущностей или None. SAXNotRecognizedException Исключения этого класса генерируются, если синтаксический анализатор сталкивается с неизвестной особенностью или свойством. SAXNotSupportedException Исключения этого класса генерируются при попытке использования возможности, которая не поддерживается данным синтаксическим анализатором. SAXReaderNotAvailable Исключения этого класса генерируются, если запрошенный анализатор не 29.6 xml.sax.handler - базовые классы для обработчиков SAX-событий Этот модуль (доступен, начиная с версии 2.0) определяет базовые классы с интерфейса SAX (см. описание модуля xml.sax) для обработки содержимого XML-документа, его DTD (Document Type Definition, определение типа документа), ошибок и ссылок на сущности. В производных классах необходимо переопределить только методы для интересующих Вас событий. ContentHandler() Этот класс определяет интерфейс обработчиков SAX-событий для содержимого XML-документа и является наиболее важным в SAX. DTDHandler() Определяет интерфейс обработчика событий для DTD (объявлений необрабатываемых сущностей и примечаний). ErrorHandler() Определяет интерфейс обработчика ошибок. EntityResolver() Определяет интерфейс обработчика ссылок на внешние сущности. Помимо интерфейсных классов модуль xml.sax.handler определяет символические константы для имен функциональных особенностей (feature *) и свойств (property *). Эти константы могут быть использованы в качестве аргументов методов getFeature() , setFeature() , getProperty() и setProperty() экземпляров xml.sax.xmlreader.XMLReader или производных от него классов. Заметим, что включение/выключение используемых особенностей возможно только до начала синтаксического анализа XML-документа. feature namespaces Выполнять обработку пространств имен (является истиной по умолчанию). feature namespace prefixes Сообщать исходные имена с приставками элементов и атрибутов, используемые при объявлении пространств имен (по умолчанию является ложью). feature string interning Обрабатывать с помощью встроенной функции intern() все приставки, имена элементов и атрибутов, URI пространств имен и т. д. (по умолчанию является ложью, то есть такая обработка не обязательна). может быть импортирован или не может выполнить внешнюю программу, необходимую для его работы. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 [ 125 ] 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |