Sunteți pe pagina 1din 78

procesarea datelor XML (II)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Tehnologii Web

SAX (Simple API for XML)


prelucrarea simplificat a documentelor XML

Gene Wolfe

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

nainte de a pune noi ntrebri,


gndete-te dac ntr-adevr vrei
s cunoti rspunsul la ele.

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Exist maniere alternative


pentru procesarea documentelor XML?

Scop:
consultarea documentelor XML/HTML
fr ca n prealabil s fie construit
arborele de noduri-obiect

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: intro

Scop:
consultarea documentelor XML/HTML
fr ca n prealabil s fie construit
arborele de noduri-obiect
documentul nu trebuie stocat complet
n memorie nainte de a fi efectiv prelucrat

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: intro

Ofer o procesare XML secvenial (liniar),


bazat pe evenimente event-oriented
iniiator: David Megginson

http://www.megginson.com/downloads/SAX/

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: caracterizare

Ofer o procesare XML secvenial (liniar),


bazat pe evenimente event-oriented
SAX is a streaming interface applications receive
information from XML documents in a continuous stream,
with no backtracking or navigation allowed

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: caracterizare

Efort independent de cel al Consoriului Web


de standardizare a procesrii XML
condus de evenimente
www.saxproject.org

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: caracterizare

Larg acceptat ca standard industrial


SAX 1.0 (1998)
implementare de referin n limbajul Java
org.xml.sax

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: caracterizare

Larg acceptat ca standard industrial


SAX 2.0 (2004)
suport pentru spaii de nume,
diverse configurri + extensii

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: caracterizare

Pentru fiecare tip de construcie XML


nceput de tag, sfrit de tag, date (coninut),
instruciune de procesare, comentariu,...
va fi emis un eveniment care va fi tratat
de o funcie/metod (handler)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Funciile/metodele de tratare se specific


de ctre programator, pentru fiecare tip
de construcie n parte

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Programul consum i trateaz evenimente


produse de procesorul SAX

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Minimal, trebuie definite funciile/metodele:


trateaza_tag_inceput (procesor, tag, atrib)
trateaza_tag_sfarsit (procesor, tag)
trateaza_date_caracter (procesor, date)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Minimal, trebuie definite funciile/metodele:


trateaza_tag_inceput (procesor, tag, atrib)
trateaza_tag_sfarsit (procesor, tag)
trateaza_date_caracter (procesor, date)
conine lista atributelor
ataate tag-ului de nceput

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Pentru fiecare eveniment de apariie a tag-ului de


nceput, a tag-ului de sfrit i a datelor-coninut,
se ataeaz una din funciile de tratare, respectiv:
set_element_handler
(trateaza_tag_inceput, trateaza_tag_sfarsit)
set_character_data_handler
funcii sau
(trateaza_date_caracter)

metode definite
de programator

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Aplicaie
client

Instanierea
handler-elor

Procesor
SAX

notificare

iniiere procesare: parse ( )

apariie eveniment
nceput de tag

apelare handler
apariie eveniment
final de tag

apelare handler

etc.

Procesare
trimite
evenimente
SAX

<projects>
<project class="S">

</project>
</projects>

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Implementarea de referin (Java): org.xml.sax

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

detalii la
www.saxproject.org/apidoc/org/xml/sax/package-summary.html

Interfee ce pot fi implementate de aplicaie:

ContentHandler

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

rezolv notificri de evenimente viznd tipul de coninut:


nceput de document, tag de nceput, date textuale,
tag de sfrit, sfrit de document etc.

Interfee ce pot fi implementate de aplicaie:

Attributes
definete lista atributelor
specificate n cadrul unui tag de nceput

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Interfee ce pot fi implementate de aplicaie:

XMLReader
specific maniera de citire a datelor XML folosind
metode de tratare a evenimentelor (callback-uri)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Interfee ce pot fi implementate de aplicaie:

ErrorHandler
specific maniera de tratare
a erorilor (fatale) i avertismentelor
pot fi emise excepii precum
SAXException i SAXParseException

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

Clasa SAX oferit:

InputSource
ncapsuleaz informaii despre o surs de intrare
de unde se preiau datele XML (e.g., flux de caractere)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: procesare

// prelucrare XML via evenimente (consultarea datelor)


public interface XMLReader {
// furnizarea de informaii despre document
public ContentHandler getContentHandler ();
public DTDHandler getDTDHandler ();
public EntityResolver getEntityResolver ();
public ErrorHandler getErrorHandler ();
// stabilirea diverselor funcionaliti
public void setContentHandler (ContentHandler contentHandler);
public void setDTDHandler (DTDHandler dtdHandler);
public void setEntityResolver (EntityResolver resolver);
public void setErrorHandler (ErrorHandler errHandler);
// procesarea propriu-zis
public void parse (InputSource in)
throws java.io.IOException, SAXException;
public void parse (String uri)
throws java.io.IOException, SAXException;
}

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Exemplificare: interfaa XMLReader (Apache Xerces)

// utilizat pentru manipularea coninuturilor XML


public interface ContentHandler {
public void setDocumentLocator (Locator locator);
public void startDocument () throws SAXException;
public void endDocument () throws SAXException;
// evenimente
public 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;
// informaii suplimentare
public 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;
}

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Exemplificare: interfaa ContentHandler (Apache Xerces)

// specific atributele asociate unui element


public interface Attributes {
public int getLength ();
public String getType (int index);
public String getValue (int index);
// acces la informaiile privitoare la numele atributului
public String getQName (int index);
public String getLocalName (int index);
public String getURI (int index);
// acces via spaii de nume XML
public 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);
}

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Exemplificare: interfaa Attributes (Apache Xerces)

libxml API open source: C, C++, Haskell, Scala,


MSSAX procesri SAX n C, C++, JavaScript;
inclus n MSXML SDK (Software Development Kit)
NSXMLParser implementare Objective-C (Apple)
org.xml.sax API de referin pentru Java
REXML procesor XML pentru Ruby
QSAX parte a mediului de dezvoltare Qt (C++)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: implementri

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: implementri
sax-js modul Node.js; altele la nodejsmodules.org/tags/sax
Xerces SAX API platform XML pentru C++ i Java:
http://xml.apache.org/
erlsom, xmerl_eventp module Erlang
xml pachet Go: https://golang.org/pkg/encoding/xml/
XML::Parser modul Perl bazat pe procesorul Expat
xml_*( ) funcii PHP: php.net/manual/en/book.xml.php

xml.sax module Python: wiki.python.org/moin/Sax

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax: demo

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

(n loc de) pauz

http://www.safelyendangered.com/comic/road-signs-for-idiots/

Cnd trebuie folosit SAX?


procesarea unor documente de mari dimensiuni
necesitatea abandonrii procesrii
(procesorul SAX poate fi oprit oricnd)
extragerea unor informaii de mici dimensiuni

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

Cnd trebuie folosit SAX?


crearea unei structuri noi de document XML
utilizarea n contextul unor resurse de calcul reduse
(memorie sczut, lrgime de band ngust,...)
exemplificare pentru Android:
developer.android.com/reference/javax/xml/parsers/SAXParser.html

cod demonstrativ pentru iOS SeismicXML:


https://developer.apple.com/library/ios/samplecode/SeismicXML/

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

Cnd trebuie utilizat DOM?


accesul direct la datele dintr-un document XML
procesri sofisticate

filtrarea complex a datelor via XPath


efectuarea de transformri XSL
validarea datelor XML prin DTD, XML Schema etc.

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

Cnd trebuie utilizat DOM?

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

necesitatea modificrii i/sau salvrii documentelor XML


n contextul procesrii datelor XML/HTML direct
n cadrul navigatorului Web, date obinute eventual
via transferuri asincrone prin AJAX

HTML
HtmlElement

DOM necesit
ncrcarea complet
a documentului XML
n vederea procesrii
ca arbore

HTML
BodyElement

HTML
ParagraphEle
ment

Text

HTML
DivElement

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

HTML
ImageElement

SAX preia fragmente reduse din document,


efectundu-se o prelucrare liniar
(ir de evenimente)
start tag

characters

start tag

end tag

end tag

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

SAX poate fi utilizat


pentru generarea de arbori DOM

Invers, arborii DOM pot fi traversai


pentru a se emite evenimente SAX
exemplificri:
modulul dom-js (Node.js), biblioteca lxml (Python)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

n cazul unor structuri XML sofisticate,


maniera de procesare SAX poate fi inadecvat
procesrile SAX ignor
contextul apariiei unui anumit element

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

Fie structura de document XML,


specificat prin urmtorul DTD:

<!DOCTYPE catalog [
<!ELEMENT catalog
<!ELEMENT categ
]>

(categ+)>
(#PCDATA | categ)*>

Ce metod de procesare s-ar preta, dac numrul de


elemente <categ> ar fi de ordinul milioanelor?

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom: exemplificare

Unele implementri SAX ofer suport


pentru validri i transformri

uzual, se folosesc ambele abordri

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

sax vs. dom

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Exist i alte metode de procesare XML?

alternative:
XPP XML Pull Parsing
legarea datelor XML
procesare simplificat

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Procesarea documentelor XML

avansat

Stiluri de procesri XML conduse de evenimente:

push versus pull

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative: xml pull parsing

avansat

Stiluri de procesri XML conduse de evenimente:


push = procesorul XML citete date XML i notific
aplicaia asupra evenimentelor survenite
(parsing events) SAX

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative: xml pull parsing

avansat

Stiluri de procesri XML conduse de evenimente:


push = procesorul XML citete date XML i notific
aplicaia asupra evenimentelor survenite
(parsing events) SAX
programul nu poate face cereri de evenimente
ele apar aa cum sunt trimise (push) de procesor

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative: xml pull parsing

avansat

Stiluri de procesri XML conduse de evenimente:

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative: xml pull parsing

pull = aplicaia controleaz maniera de procesare i poate


solicita (pull) procesorului urmtorul eveniment XML
XPP XML Pull Parsing

www.xmlpull.org

avansat

Stiluri de procesri XML conduse de evenimente:

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative: xml pull parsing

pull = aplicaia controleaz maniera de procesare i poate


solicita (pull) procesorului urmtorul eveniment XML
XPP XML Pull Parsing
structura codului-surs al programului
reflect structura documentului XML prelucrat

avansat

Interfeele push
Procesare read-only
Prelucrare rapid,
via fluxuri de date (streams)
Codul-surs poate fi dificil
de neles

Interfeele pull
Motenesc avantajele
interfeelor push
Evenimentele se consum
conform necesitilor
Programele au o structur
mai clar

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative: xml pull parsing

avansat

StAX Streaming API for XML (Java) JSR 173


http://jcp.org/en/jsr/detail?id=173
exemple de implementri:
Javolution focalizat pe performan: http://javolution.org/
Oracle StAX inclus n XDK (XML Developers Kit)
https://docs.oracle.com/javase/tutorial/jaxp/stax/
Woodstox https://github.com/FasterXML/woodstox

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

xml pull parsing implementri

avansat

irrXML iniial, parte din Irrlicht 3D Engine (C++)


pull pachet Scala de procesare XPP
QXmlStreamReader, QXmlStreamWriter din mediul Qt (C++)
saxpath modul Node.js permind evaluarea
de expresii XPath pentru un flux de evenimente SAX

xml.dom.pulldom soluie Python


XmlPullParser interfa Java pentru Android

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

xml pull parsing implementri

avansat

Clasificare a manierelor de procesare XML


mod de accesare: secvenial vs. direct (random)

controlul fluxului de evenimente: pull vs. push


managementul arborelui: ierarhic vs. imbricat

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

avansat

DOM
acces direct, n stilul pull
SAX
acces secvenial, n stilul push
XPP i .NET XmlTextReader
acces secvenial, n stilul pull

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

avansat

Legarea datelor XML de alte surse de date


(XML binding)

baze de date: XML infoset dataset


DBMS

<doc>
<xml />
<!-- -->
</doc>

Id

data sets
(tables)

<doc>
<xml />
<!-- -->
</doc>

arbore DOM
(n memorie)

fiier
XML

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

avansat

Legarea datelor XML de alte surse de date


(XML binding)

baze de date: XML infoset dataset


specificaia SQL/XML vezi standardul SQL:2011-14

aspecte de interes:
tipul XML pentru valori ale cmpurilor tabelelor
recurgerea la predicate + funcii specifice XML

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

baze de date: XML infoset dataset


implementri concrete:
Oracle XML DB
docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb01int.htm

pureXML (IBM DB2)


www.ibm.com/developerworks/data/library/techarticle/dm-0603saracco2/

SQLXML (Microsoft SQL Server)


msdn.microsoft.com/library/aa286527.aspx

XML Functions (PostgreSQL)


www.postgresql.org/docs/current/static/functions-xml.html

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

avansat

avansat

Legarea datelor XML de alte surse de date


(XML binding)
abordare obiectual:
date XML clase create din zbor
(serialization, marshalling)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

abordare obiectual:
date XML clase create din zbor
exemple:
C++ cereal: http://uscilab.github.io/cereal/
C++, C#, Go, Java, Python Protocol Buffers
developers.google.com/protocol-buffers/
Java Digester: commons.apache.org/proper/commons-digester/
JS node-xml2js: github.com/Leonidas-from-XIV/node-xml2js

.NET (C# et al.) clasa XmlSerializer


PHP SimpleXML: php.net/manual/en/ref.simplexml.php
Python Untangle: github.com/stchris/untangle
Scala scalaxb: http://scalaxb.org/

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

avansat

avansat

Legarea datelor XML de alte surse de date


(XML binding)
interogri asupra datelor XML
direct n limbajul de programare
LINQ (Language INtegrated Query) .NET Framework

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

http://msdn.microsoft.com/en-us/library/vstudio/bb397926.aspx

XDocument proiecte; // XDocument e o clas .NET

avansat

var proiecteS =
// via o expresie LINQ, prelum toate proiectele
from p in proiecte.Descendants ("project")
// din care le alegem pe cele de clasa 'S'
where (String) p.Attribute ("class") == "S"
// ordonate dup numrul de studeni
orderby (String) p.Element ("stud")
// selectnd doar titlul acestora
select (String) p.Element ("title");

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

proiecte = XDocument.Load ("projects.xml");

// afim titlul proiectelor de clasa 'S'


foreach (var proiect in proiecteS) {
Console.WriteLine (proiect);
}
// acelai rezultat, recurgnd la XPath
var proiecteS2 = (IEnumerable)
proiecte.XPathEvaluate ("//project[@class='S']/title");

avansat

Legarea datelor XML de alte surse de date


(XML binding)
JAXB Java Architecture for XML Binding (JSR-222)
https://jcp.org/en/jsr/detail?id=222
implementarea de referin: https://jaxb.java.net/
de studiat i EclipseLink: www.eclipse.org/eclipselink/

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

avansat

Legarea datelor XML de alte surse de date


(XML binding)

interoperabilitate cu alte formate: XML JSON


nu exist o metod standardizat

exemplificri de instrumente i biblioteci:


Apache Camel (Java), js2xmlparser (Node.js),
JSON-lib (Java), ruby-xml-to-json, x2js (JavaScript),
xml2json (Node.js), xml-to-json (Haskell), xmlutils.py

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Procesarea XML simplificat


scop:
procesarea unui document XML (de mici dimensiuni)
direct n memorie,
n manier obiectual,
diferit de DOM

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Procesarea XML simplificat


uzual, adopt maniera de prelucrare XPP
(XML Pull Parsing)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Procesarea XML simplificat


fiecrui element XML i poate corespunde
o proprietate a unui obiect

atributele asociate elementelor XML pot fi modelate


via o structur de date e.g., tablou asociativ

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Procesarea XML simplificat


exemplificri diverse:
libxml (C, C++ i alte limbaje)
SimpleXML (PHP) php.net/manual/en/book.simplexml.php
XML::Simple + XML::Writer (Perl)
XmlSimple (Ruby)
XmlTextReader + XmlTextWriter (.NET)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Procesarea XML simplificat


pentru consultare, se poate folosit
un cititor (reader): XMLReader
exemple:
modulul xmlreader pentru Node.js
xmlReader oferit de biblioteca libxml (implementare C)
XMLReader (PHP) php.net/manual/en/book.xmlreader.php
clasa XmlReader oferit de .NET (C# et al.)

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Procesarea XML simplificat


pentru generare, se poate utiliza
un scriitor (writer): XMLWriter
exemplificri:
clasa XmlWriter pentru .NET
xmlWriter din cadrul bibliotecii libxml (C et al.)
XMLWriter (PHP) php.net/manual/en/book.xmlwriter.php
modulul xml-writer oferit pentru Node.js

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

alternative

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

Cum pot fi procesate documentele HTML?

Aspect de interes:
ignorarea erorilor de sintax
documente bine formatate (well formed)
versus
documente valide

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html

Aspect de interes:
ignorarea erorilor de sintax
malformed markup
sunt relativ rare cazurile n care documentele HTML
sunt scrise/generate corect

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html

Tehnica folosit uzual nerecomandat


Web scrapping
extragerea datelor de interes
prin prelucrarea de obicei, empiric
a marcajelor HTML

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html

Recurgerea la un procesor HTML/XML specific


scopuri importante:
traversarea (procesarea) unei pagini Web e.g., via DOM
+
detectarea & repararea erorilor sintactice (HTML clean)
vezi i cursurile
anterioare

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html

Beautiful Soup bibliotec Python


http://www.crummy.com/software/BeautifulSoup/

Gumbo procesor HTML5 implementat n C (Google)


https://github.com/google/gumbo-parser

html5lib procesare + serializare HTML pentru Python


https://github.com/html5lib

HTML::Gumbo, HTML::Parser module Perl


http://search.cpan.org/dist/HTML-Parser/

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html: instrumente

Html Agility Pack bibliotec .NET


http://htmlagilitypack.codeplex.com/

Hubbub prelucrare de marcaje HTML5 n limbajul C


http://www.netsurf-browser.org/projects/hubbub/

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html: instrumente

Jericho HTML Parser bibliotec Java de procesare HTML


http://jericho.htmlparser.net/

jsoup bibliotec Java pentru HTML5


http://jsoup.org/

Masterminds HTML5-PHP procesor HTML5 n PHP


http://masterminds.github.io/html5-php/

Nokogiri pachet Ruby


http://www.nokogiri.org/

Parse5 modul Node.js


https://github.com/inikulin/parse5

Pure JavaScript HTML5 Parser bibliotec JS


https://github.com/blowsie/Pure-JavaScript-HTML5-Parser

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html: instrumente

HtmlCleaner instrument implementat n Java pentru


corectarea marcajelor HTML eronate
HTML Purifier verificare & filtrare a marcajelor HTML
(inclusiv viznd atacuri de tip XSS Cross Site Scripting)
cu implementri n PHP i Objective-C

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

procesare html: instrumente

NekoHTML procesor Java pentru HTML bazat pe Xerces


cu suport pentru rezolvarea erorilor sintactice
Validator.nu procesor Java folosind DOM ori SAX
cu semnalarea erorilor de sintax HTML5


procesri XML: de la SAX la XPP i Simple XML
instrumente de prelucrare a documentelor HTML

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

rezumat

episodul viitor: servicii Web prin SOAP


Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/

S-ar putea să vă placă și