51
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ Tehnologii Tehnologii Web Web <?xml version=“1.0” ?> <curs desc=“…” /> Tehnologii Web Dr. SabinCorneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/

Web - XML processing (SAX)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tehnologii Web

Dr. Sabin­Corneliu BuragaFacultatea de Informatica

Universitatea “A.I.Cuza” – Iasi, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Detalii in [TX, 240‐268]

Procesari XML

Page 3: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

“Inainte de a pune noi intrebari, gindeste‐te daca intr‐adevar vrei sa cunosti raspunsul la ele.”

Gene Wolfe

Page 4: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

XML (Extensible Markup Language)Procesarea documentelor XML

Interfata SAX (Simple API for XML)Alternative

cuprins

Page 5: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Scop: manipularea documentelor XML fara ca in prealabil sa fie construit

arborele de noduri‐obiect

documentul nu trebuie stocat completin memorie inainte de a fi efectiv prelucrat

sax: intro

Page 6: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Ofera o procesare XML secventiala (liniara),bazata pe evenimente – event­oriented

Initiator: David Megginsonhttp://www.megginson.com/SAX/

sax: caracterizare

Page 7: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Efort independent – de cel al Consortiului Web –de standardizare a procesarii XML

condusa de evenimente

Larg acceptat ca standard industrial:SAX 1.0 + SAX 2.0 (spatii de nume + extensii)

http://www.saxproject.org/

sax: caracterizare

Page 8: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Pentru fiecare tip de constructie XML(inceput de tag, sfirsit de tag, continut, instructiune de procesare, comentariu,...) va fi generat un eveniment care va fi tratat

de o functie/metoda (handler)

sax: procesare

Page 9: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functiile/metodele de tratare se specificade catre programator, pentru fiecare tip 

de constructie in parte

Programul consuma si trateaza evenimenteproduse de procesorul SAX

sax: procesare

Page 10: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Minimal, trebuie definite functiile/metodele:trateaza_tag_inceput (procesor, tag, atrib)trateaza_tag_sfirsit (procesor, tag)trateaza_date_caract (procesor, date)

sax: procesare

ContineContine listalistaatributeloratributelor

atasateatasate tagtag‐‐uluiului de de inceputinceput

Page 11: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Pentru fiecare eveniment de aparitiea tag‐ului de inceput, a tag‐ului de sfirsitsi a datelor‐continut, se ataseaza unadintre functiile de tratare, respectiv:

set_element_handler(trateaza_tag_inceput, trateaza_tag_sfirsit)

set_character_data_handler(trateaza_date_caract)

sax: procesare

Page 12: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Implementarea de referinta (Java): org.xml.saxInterfete implementate de procesorul XML (SAX Driver)

Interfete implementate de aplicatie: DocumentHandler, ErrorHandler, DTDHandler, EntityResolver (optionale)

Clase SAX standard: InputSource, SAXException, SAXParseException, HandlerBase

Clase aditionale: ParserFactory, AttributeListImpl, LocatorImpl

sax: procesare

Page 13: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

public interface XMLReader{

// furnizeaza informatii despre documentpublic ContentHandler getContentHandler ();public DTDHandler getDTDHandler ();public EntityResolver getEntityResolver ();public ErrorHandler getErrorHandler ();// seteaza diverse functionalitatipublic void setContentHandler (ContentHandler contentHandler);public void setDTDHandler (DTDHandler dtdHandler);public void setEntityResolver (EntityResolver resolver);public void setErrorHandler (ErrorHandler errHandler);// procesarea propriu-zisapublic void parse (InputSource in)

throws java.io.IOException, SAXException;public void parse (String uri)

throws java.io.IOException, SAXException;}

sax: procesare

Apache Xerces: interfata

XMLReader

Page 14: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

public interface ContentHandler{

public void setDocumentLocator (Locator locator);public void startDocument () throws SAXException;public void endDocument () throws SAXException;// evenimentepublic void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException;

public void endElement (String uri, String localName, String qName) throws SAXException;

public void characters (char buf[], int offset, int length) throws SAXException;public void processingInstruction (String target, String data) throws SAXException;// informatii suplimentarepublic void ignorableWhitespace (char buf[], int offset, int length)

throws SAXException;public void startPrefixMapping (String prefix, String uri) throws SAXException;public void endPrefixMapping (String prefix) throws SAXException;public void skippedEntity (String name) throws SAXException;

}

sax: procesareApache Xerces: 

interfataContentHandler

Page 15: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

public interface Attributes{

public int getLength ();public String getType (int index);public String getValue (int index);// acces la informatiile privitoare la numepublic String getQName (int index);public String getLocalName (int index);public String getURI (int index);// acces via spatii de nume XMLpublic int getIndex (String uri, String localName);public String getType (String uri, String localName);public String getValue (String uri, String localName);// acces via nume calificate (ns:nume)public int getIndex (String qName);public String getType (String qName);public String getValue (String qName);

}

sax: procesare

Apache Xerces: interfataAttributes

Page 16: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

libxml – API oferit de GNOME (C, C++, Perl, PHP, Python,…)

MSSAX – procesari SAX in C/C++, JScript, VBScript; inclus in MSXML SDK 

org.xml.sax – API de referinta pentru JavaQSAX – parte a mediului Qt (C++)Xerces SAX API – platforma XML pentru C++ si Java: 

http://xml.apache.org/XML::Parser – modul Perl (bazat pe Expat)xml_*() – functii PHP4xml.sax – modul Python, parte a PyXML

sax: implementari

Page 17: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

sax: demo

!!

Page 18: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Cind trebuie folosit SAX?Procesarea unor documente de mari dimensiuniNecesitatea abandonarii procesarii(procesorul SAX poate fi oprit oricind)

Extragerea unor informatii de mici dimensiuniCrearea unei structuri noi de document XMLUtilizarea in contextul unor resurse de calcul reduse(e.g., memorie scazuta, largime de banda ingusta,...)

sax vs. dom

Page 19: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Cind trebuie folosit DOM?Accesul direct la datele dintr‐un document XMLCautari complexeFiltrarea complexa a datelor via XPathEfectuarea de transformari XSLNecesitateamodificarii si salvarii documentelor XMLIn contextul procesarii XML direct in cadrul navigatorului Web

sax vs. dom

Page 20: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

DOM necesita incarcarea completa a documentului XML in vederea procesarii ca arbore

SAX necesita pentru procesare existenta unor fragmentereduse din document, efectuindu‐se o prelucrare liniara

(sir de evenimente)

sax vs. dom

Page 21: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

SAX poate fi utilizat pentru generarea de arbori DOM

Invers, arborii DOM pot fi traversatipentru a se emite evenimente SAX

In cazul unor structuri XML sofisticate,modul de procesare SAX poate fi inadecvat

sax vs. dom

Page 22: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Unele implementari SAX ofera suportpentru validari si transformari

Uzual, se folosesc ambele API‐uri

sax vs. dom

Page 23: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

intrebare

Exista si alte metode de procesare XML?

Page 24: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Procesarea documentelor XMLAlternative:

XPP (XML Pull Parsing)“Legarea” datelor XMLProcesare simplificata

Comparatii

cuprins

Page 25: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Stiluri de procesari XML conduse de evenimente:Push versus Pull

alternative

Page 26: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Stiluri de procesari XML conduse de evenimente:Push = procesorul XML citeste date XML si notificaaplicatia asupra evenimentelor survenite(parsing events) – SAXAplicatia nu poate face cereri de evenimente,ele aparind asa cum sunt trimise (push) de procesor

alternative

Page 27: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Stiluri de procesari XML conduse de evenimente:Pull = aplicatia controleaza maniera de procesare sipoate solicita (pull) procesorului urmatoruleveniment XML – XPP (XML Pull Parsing)Structura codului‐sursa al aplicatiei reflectastructura documentului XML procesat

alternative

Page 28: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Interfetele push Interfetele pull

Procesare read­only Mostenesc avantajeleinterfetelor push

Prelucrare rapida, via fluxuri de date (streams)

Evenim. sunt consumateconform necesitatilor

Codul‐sursa poate fi dificilde inteles

Programele au o structuramai clara

Page 29: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

StAX – Streaming API for XML (Java) – JSR 173http://jcp.org/en/jsr/detail?id=173

BEA StAXJavolution – focalizat pe performanta:

http://javolution.org/Oracle StAX – inclus in XDKSun SJSXP – disponibil in Java 6 SDKWoodstox – oferit in contextul SOAP: 

http://xircles.codehaus.org/projects/woodstox

alternative: implementari

Page 30: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Maniere de procesare a evenimentelor:Cursor: evenimentele sunt disponibile direct, ca proprietati, si nu este creat nici un obiectpentru reprezentarea evenimentului XML aparutXmlPull, StAX Cursor, .NET XmlTextReader

Iterator: fiecare eveniment XML este reprezentatde un obiect (imutabil, deseori) StAX Iterator

Mixta: obiectele‐eveniment pot fi reutilizatedupa creareNekoPull, XPP1, XPP2

alternative

Page 31: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Clasificare a manierelor de procesare XMLMod de accesare: secvential vs. direct (random)Controlul fluxului: pull vs. pushManagementul arborelui: ierarhic vs. imbricat

Page 32: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

DOM ofera acces direct, in stilul pull

SAX ofera acces secvential, in stilul push

XPP si .NET XmlTextReader ofera acces secvential,in stilul pull

Page 33: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

“Legarea” datelor XML de alte surse de date(XML binding)

Baze de date: XML infoset↔ dataset

Page 34: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

“Legarea” datelor XML de alte surse de date(XML binding)

Obiecte: date XML ↔ clase create “din zbor”

(C#, Java, Perl, PHP5)

interogari asupra datelor XML direct in limbajulde programare – LINQ (Language INtegrated Query)

Page 35: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

“Legarea” datelor XML de alte surse de date(XML binding)

Exemple de implementari:Castor, Zeus, JAXB (Java Architecture for XML Binding), 

XmlDataDocument (.NET) etc.

Page 36: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Procesarea XML simplificata

Scop: procesarea unui document XML(de mici dimensiuni) direct in memorie,in maniera obiectuala, diferita de DOM

Page 37: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Procesarea XML simplificata

Fiecarui element XML ii poate corespundeo proprietate a unui obiect

Atributele asociate elementelor XML pot fi memorateintr‐o structura de date (e.g., tablou asociativ)

Page 38: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Procesarea XML simplificataImplementari: 

E4X – ECMAScript for XML (Javascript)libxml (C)

SimpleXML (PHP5)XML::Simple & XML::Writer (Perl) 

XmlTextReader & XmlTextWriter (.NET)

Page 39: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Procesarea XML simplificataPentru consultare, se poate folositun cititor (reader): XMLReader

E.g., clasa XmlTextReader oferita de .NET Framework

Page 40: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Procesarea XML simplificataPentru generare, se poate utilizaun scriitor (writer): XMLWriter

E.g., clasa XmlTextWriter oferita de .NET Framework

Page 41: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

DOM partialUnele procesoare XML ofera posibilitateaconstruirii partiale a arborelui DOM

Exemplu: Apache AXIOM (C, Java)http://ws.apache.org/commons/axiom/

Page 42: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative: demo

!!

Page 43: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

ComparatiiStudiu de caz: benchmark privind contorizareaaparitiilor elementelor & atributelor si lungimea

nodurilor de tip text

Detalii in Matthias Farwick, Michael Hafner, XML Parser Benchmarks: Part 1 & Part 2, XML.com, mai 2007: 

www.xml.com/pub/a/2007/05/09/xml-parser-benchmarks-part-1.html

Page 44: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Page 45: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Page 46: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Page 47: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Page 48: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Page 49: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

alternative

Page 50: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

rezumat

Procesarea documentelor XMLInterfata SAX & alternativele

Page 51: Web - XML processing (SAX)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

??