Miguel de Cervantes y Saavedra - Don Quijote de la Mancha - Ebook:
HTML+ZIP- TXT - TXT+ZIP

Wikipedia for Schools (ES) - Static Wikipedia (ES) 2006
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
SAX — Википедия

SAX

Материал из Википедии — свободной энциклопедии

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

Обычно SAX-парсеры требуют фиксированное количество памяти для своей работы, но не позволяют изменять содержимое документа. Всё что делает SAX-парсер это сообщает вызвавшему приложению о встреченных распознанных элементах XML-разметки или о встреченных ошибках. Связь парсера с вызывающим приложением, как правило, осуществляется посредством callback-функций.

Различные реализации SAX-парсеров могут различатся, но в целом они реализованы однотипно, примерно так как показано ниже:

// ... На примере языка C++

// Поток документа
struct Stream
{
    virtual xml_char pop_char() = 0;
    virtual bool     has_data() = 0;
};

// Класс, которому парсер сообщает о найденных элементах разметки
struct Callback
{
    virtual void doc_start() = 0;
    virtual void doc_end() = 0;

    virtual void element_start( string el_name ) = 0;
    virtual void element_end( string el_name ) = 0;

    virtual void attribute( string name, string value ) = 0;

    virtual void text_node( string txt ) = 0;

    // ...
}

// Сам парсер. -- Довольно сложный, чтобы его тут полностью записать
struct Parser
{
    bool parse( Stream& xml, Callback& cb );
    // ... 
};

Использование:

struct MyFileStream : Stream { ... };
struct MyCallback : Callback { ... };

MyFileStream _stream( "some_file.xml" );
MyCallback _cb;

Parser parser;

bool success = parser.parse( _stream, _cb );

// Например, "some_file.xml" содержит следующий текст:
// <html lang="en">
//   <b>bold text</b>
// </html>

// Тогда парсер вызовет методы класса "Callback" в сдедующем порядке:
// _cb.doc_start();
// _cb.element_start( "html" );
// _cb.attribute( "lang", "en" );
// _cb.element_start( "b" );
// _cb.text_node( "bold text" );
// _cb.element_end( "b" );
// _cb.element_end( "html" );
// _cb.doc_end();

Применяются SAХ-парсеры либо для быстрого поиска по ХML-документам, либо для построения DOM, или, в редких случаях, для забавы.

[править] См. также

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);
  }
 }

}

[править] Литература

[править] Ссылки

 
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com