SAX

SAX (англ. «Simple API for XML») — способ последовательного чтения/записи XML-файлов.

Обычно SAX-парсеры требуют фиксированное количество памяти для своей работы, но не позволяют изменять содержимое документа.

См. также

SAX - событийный парсер XML. Он содержит очень похожую модель обработки событий на такую же модель в Java. К примеру, в аплете Вы можете зарегистрировать обработчика события на клик мишкой, а в SAX Вы можете зарегистрировать обработчик события на начало и конец тегов элементов, таких как <name/> and </name>. В этом документе рассматривается XML парсер производства IBM. Он бесплатен и имеет общедоступные исходные тексты. Загрузка XML парсера для Java. После загрузки распакуйте архив и добавьте .jar файлы в ваш CLASSPATH. Возьмём простой пример XML файла.


<?xml version="1.0" encoding="windows-1251"?>
<order>
  <item>
    <name>Soccer Ball</name>
    <price>15.00</price>
    <quantity>5</quantity>
  </item>
</order>


Параметр encoding="windows-1251" необходим для работы в кодировке Windows. Для разбора XML документа используя SAX мы осуществим несколько шагов. Эта шаги выделены в коде примера. Регистрация парсера XML Создание экземпляра XMLReader Создание экземпляра класса отвечающего за обработку событий SAX-а Подключение обработчика событий к экземпляру нашего XMLReader-а Разбор документа посредством передачи XMLReader-у XML файла. (В этом примере используется файл "order.xml" содержащий XML код приведенный в начале статьи.) В примере, наш класс расширит DefaultHandler. DefaultHandler это класс-адаптер, который позволит нам обрабатывать только те события SAX-а, которые нам нужны, а не реализовывать все его события.

package xml;

import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler;

public class SimpleSax extends DefaultHandler {

 private String currentElement = null;
 public static void main(String args) {
   try {
     Class c = Class.forName("org.apache.xerces.parsers.SAXParser");
     XMLReader reader = (XMLReader)c.newInstance();
     SimpleSax ss = new SimpleSax();
     reader.setContentHandler(ss);
     reader.parse("order.xml");
   } catch(Exception e){System.out.println(e);}
 }
 public void startElement(String uri, String local_name, String raw_name, Attributes amap) throws SAXException {
   currentElement = local_name;
   System.out.println("start " + local_name + " found ");
 }
 public void endElement(String uri, String local_name, String raw_name) throws SAXException {
   System.out.println("end " + local_name + " found");
 }
 public void startDocument() throws SAXException {
  System.out.println("start document");
 }
 public void endDocument() throws SAXException {
  System.out.println("end document");
 }
 public void characters(char ch, int start, int length) throws SAXException {
  String value = new String(ch,start,length);
  if (!Character.isISOControl(value.charAt(0))) {
   System.out.println("characters " + value + " found " + currentElement);
  }
 }

}

Литература

  • David Brownell, SAX2, O’Reilly, ISBN 0-596-00237-8
  • W. Scott Means, Michael A. Bodie: The Book of SAX, No Starch Press, ISBN 1-886411-77-8

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home