120 likes | 350 Views
SAX. Simple API for XML. Презентацию подготовила Иванова Анна, гр. 950б. Что такое SAX ???. SAX – это открытый стандарт для обработки документов XML , базирующийся на событиях. SAX - c пособ обработки отдельных частей документа XML и доступа к ним.
E N D
SAX Simple API for XML Презентацию подготовила Иванова Анна, гр. 950б
Что такое SAX??? SAX – это открытый стандарт для обработки документов XML, базирующийся на событиях. SAX - cпособ обработки отдельных частей документа XML и доступа к ним. • Во время обработки документа каждая часть его идентифицируется, после чего вызывается соответствующее событие. • Обрабатывает каждый элемент разметки, как отдельное событие, не требуя загрузки всего документа в память. • Нельзя создать XML документ с нуля.
Синтаксические анализаторы SAX. Синтаксические анализаторы SAX приводят к возникновению событий. При обработки документа они вызывают методы после возникновения событий разметки. Синтаксический анализатор проектируется так, чтобы считывать и распознавать уникальные знаки разметки в потоке данных, образующих XML документ.
Пример. < ? xml version=“1.0” ? > <note> < message from = “Aida” > Stop missing classes!!!! </message> </note> К событиям, которые можно получить синтаксическим анализатором, относятся: • Начало документа. • Начало элемента (note и message). • Пара имя-значение атрибута (from=“Aida”)/ • Текстовые данные ( Stop missing classes!!! )/ • Конец элемента. • Конец документа.
Преимущества SAXа. • Обработка больших документов. При работе SAX требуемый объем памяти не возрастает вместе с увеличением размера обрабатываемого файла. • Программное прерывание обработки документа. SAX позволяет прервать обработку документа после нахождения определенных сведений. • Извлечение небольших фрагментов информации. Можно проводить поиск малых фрагментов информации в больших экземплярах документов, не загружая при этом в память остальные ненужные данные. Это значительно экономит системные ресурсы.
Отрицательные стороны. • Произвольный доступ к документу. SAX не позволяет загрузить весь документ в память, а обрабатывает данные последовательно. Поэтому могут возникнуть сложности при произвольном доступе к узлам, между которыми существуют сложные отношения. • Сложная фильтрация при извлечении данных. SAX не имеет возможности возвращать сведения со сложной структурой автоматически, и это приходится делать вручную. • Создание и изменение документа XML. SAX позволяет отслеживать события, но его нельзя использовать для построения экземпляра документа XML для дальнейших обработок, хранения или передачи. • Пробелы. SAX учитывает все знаки пробелов . А значит каждый знак пробела вызывает соответствующее событие
Методы, вызываемые при обработке событий SAX. documentLocator- метод, возвращающий имя файла, путь или URL обрабатываемого документа XML. startDocument - метод, вызываемый при достижении обработчика начала объекта XMLdocument. endDocument - метод, вызываемый при достижении обработчиком конца объекта XMLdocument. startElement– метод, вызываемый при достижении обработчиком открывающегося дескриптора элемента. endElement – метод, вызываемый при достижении обработчиком закрывающегося дескриптора элемента. сharacters –метод, вызываемый обработчиком при достижении текстовых данных или знаков пробела. processingInstruction –метод, вызываемый при обнаружении инструкции обработки.
Импортирование классов. 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 – 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 – Characters: SAX Event – Element End: message SAX Event – Characters: SAX Event – Element End: note SAX Event –End of Document