SAX: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
+ {{сирота}} при помощи AWB
Поставил теги <source> && поправил стилистику
Строка 6:
 
Различные реализации SAX-[[парсер]]ов могут различатся, но в целом они реализованы однотипно, примерно так как показано ниже:
<source lang="cpp">
<code><pre>
// ... На примере языка C++
 
Строка 38:
// ...
};
</pre></codesource>
 
Использование:
<source lang="cpp">
<code><pre>
struct MyFileStream : Stream { ... };
struct MyCallback : Callback { ... };
Строка 66:
// _cb.element_end( "html" );
// _cb.doc_end();
</pre></codesource>
 
Применяются [[SAХ]]-парсеры либо для быстрого поиска по [[ХML]]-документам, либо во время построения [[DOM]], либо для чтения XML-потоков большого объема (когда построение DOM требует слишком большого объема памяти).
 
== См. также ==
* [[DOM|DOM (Document Object Model)]]
* [[XML|XML (eXtended Markup Language)]]
 
SAX - событийный парсер XML.
Он содержит очень похожую модель обработки событий на такую же модель в Java. К примеру, в аплете Вы можете зарегистрировать обработчика события на клик мишкой, а в SAX Вы можете зарегистрировать обработчик события на начало и конец тегов элементов, таких как <name/> andи </name>.
В этом документе рассматривается XML парсер производства IBM. Он бесплатен и имеет общедоступные исходные тексты. Загрузка XML парсера для Java. После загрузки распакуйте архив и добавьте .jar файлы в ваш CLASSPATH.
Возьмём простой пример XML файла. :
<source lang="xml">
 
 
<?xml version="1.0" encoding="windows-1251"?>
<order>
Строка 88 ⟶ 83 :
</item>
</order>
</source>
 
 
Параметр encoding="windows-1251" необходим для работы в кодировке Windows. Для разбора XML документа используя SAX мы осуществим несколько шагов. Эта шаги выделены в коде примера.
*Регистрация парсера XML
*Создание экземпляра XMLReader
*Создание экземпляра класса отвечающего за обработку событий SAX-а
*Подключение обработчика событий к экземпляру нашего XMLReader-а
*Разбор документа посредством передачи XMLReader-у XML файла. (В этом примере используется файл "order.xml" содержащий XML код приведенный в начале статьи.)
В примере, наш класс расширит DefaultHandler. DefaultHandler это класс-адаптер, который позволит нам обрабатывать только те события SAX-а, которые нам нужны, а не реализовывать все его события.
<source lang="java">
 
package xml;
 
Строка 138 ⟶ 133 :
}
}
 
}
</source>
 
== См. также ==
* [[DOM|DOM (Document Object Model)]]
* [[XML|XML (eXtended Markup Language)]]
 
== Литература ==