SAX Simple API for XML Презентацию подготовила Иванова Анна, гр. 950б
Что такое SAX??? SAX – это открытый стандарт для обработки документов XML, базирующийся на событиях. SAX - cпособ обработки отдельных частей документа XML и доступа к ним. – Во время обработки документа каждая часть его идентифицируется, после чего вызывается соответствующее событие. – Обрабатывает каждый элемент разметки, как отдельное событие, не требуя загрузки всего документа в память. – Нельзя создать XML документ с нуля.
Синтаксические анализаторы SAX. Синтаксические анализаторы SAX приводят к возникновению событий. При обработки документа они вызывают методы после возникновения событий разметки. Синтаксический анализатор проектируется так, чтобы считывать и распознавать уникальные знаки разметки в потоке данных, образующих XML документ.
Пример. Stop missing classes!!!! К событиям, которые можно получить синтаксическим анализатором, относятся: 1.Начало документа. 2.Начало элемента (note и message). 3.Пара имя-значение атрибута (from=Aida)/ 4.Текстовые данные ( Stop missing classes!!! )/ 5.Конец элемента. 6.Конец документа.
Преимущества SAXа. 1.Обработка больших документов. При работе SAX требуемый объем памяти не возрастает вместе с увеличением размера обрабатываемого файла. 2.Программное прерывание обработки документа. SAX позволяет прервать обработку документа после нахождения определенных сведений. 3.Извлечение небольших фрагментов информации. Можно проводить поиск малых фрагментов информации в больших экземплярах документов, не загружая при этом в память остальные ненужные данные. Это значительно экономит системные ресурсы.
Отрицательные стороны. 1.Произвольный доступ к документу. SAX не позволяет загрузить весь документ в память, а обрабатывает данные последовательно. Поэтому могут возникнуть сложности при произвольном доступе к узлам, между которыми существуют сложные отношения. 2.Сложная фильтрация при извлечении данных. SAX не имеет возможности возвращать сведения со сложной структурой автоматически, и это приходится делать вручную. 3.Создание и изменение документа XML. SAX позволяет отслеживать события, но его нельзя использовать для построения экземпляра документа XML для дальнейших обработок, хранения или передачи. 4.Пробелы. SAX учитывает все знаки пробелов. А значит каждый знак пробела вызывает соответствующее событие
Методы, вызываемые при обработке событий SAX. documentLocator - метод, возвращающий имя файла, путь или URL обрабатываемого документа XML. startDocument - метод, вызываемый при достижении обработчика начала объекта XMLdocument. endDocument - метод, вызываемый при достижении обработчиком конца объекта XMLdocument. startElement – метод, вызываемый при достижении обработчиком открывающегося дескриптора элемента. endElement – метод, вызываемый при достижении обработчиком закрывающегося дескриптора элемента. сharacters – метод, вызываемый обработчиком при достижении текстовых данных или знаков пробела. processingInstruction – метод, вызываемый при обнаружении инструкции обработки.
SAX и JAVA.
Импортирование классов. import java.io. *; // управление данными через потоки ввода-вывода import org.xml.sax. *; // классы и программные интерфейсы для синтаксических анализаторов SAX import javax.xml.parsers.SAXParserFactory //для инициализации синтаксического анализатора для проверки документов с использованием схем DOM import java.xml.parsers.ParserConfigurationExeption //для обработки ошибки в том случае, если синтаксический анализатор не удалось должным образом инициализировать import java.xml.parsers.SaxParser //для инициализации объекта синтаксического анализатора SAX
Класс HendlerBase. Реализует четыре интерфейса из org.xml.sax. DocumentHandler – обрабатывает события по мере их появления во время обработки документа. DTDHandler – обрабатывает ссылки в соответствующей схеме DTD. EntityReference – обрабатывает любые внешние ссылки. ErrorHandler – обрабатывает любые ошибки, возникшие при обработке ошибок.
Методы SAX. setDocumentLocator – для указания адреса URL обрабатываемого документа синтаксическому анализатору SAX. startDocument – инструктирует синтаксический анализатор SAX сообщить о том, что он обнаружил начало документа. Это событие происходит всего один раз для каждого экземпляра документа. endDocument startElement (имя элемента, список аттрибутов) еndElement (имя элемента) сharacter (буфер, значение смещения символов, длина строки) – обработка текстовых данных. processingInstruction (название системы, значение, передаваемое инструкцией обработки) – инструкция обработки.
Компиляция. Name of document : file:C:/SAX/message1.xml SAX Event – Start of Document SAX Event – Element Start: note SAX Event – Characters: SAX Event – Element Start: message SAX Event – Attribute: from=Aida SAX Event – Characters: SAX Event – Characters: Stop missing classes!!! SAX Event – Characters: SAX Event – Element End: message SAX Event – Characters: SAX Event – Element End: note SAX Event –End of Document