SAX prelucrarea Dr. Sabin Dr.Sabin pro , procesări simplificate, XML/HTML cesarea Corneliu datelor HTML Tehnologii datelor Buraga (II) – profs.info.uaic.ro/~ Web busaco /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ g „Î â nde nainte s ă cuno ș te - de a pune te ș Gene Wolfe ti r dac ă spunsul ă î ntr noi - adev î ntreb la ele. ă r vrei ă ” ri ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru Exist procesarea ă maniere documentelor alternative XML?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ consultarea f ă r ă arborele ca î n prealabil documentelor sax de Scop : intro noduri : s ă fie - obiect XML construit /HTML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ în contrast cu DOM, cu în contrast consultarea î n f memorie ă r ă arborele ca î n î documentul nainte prealabil documentelor sax de Scop : intro de a fi noduri : s nu ă efectiv fie trebuie - obiect XML construit prelucrat /HTML stocat complet
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Ofer bazat ă o www.megginson.com/downloads/SAX/ procesare ă pe ini sax ț evenimente iator : caracterizare : David XML XML secven Megginson – event ț ial - oriented ă ( liniar ă ),
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ information from XML documents in a continuous stream, a continuous in XML documents from information Prelucrarea “SAX oferindu with no backtracking or navigation allowed or navigation no backtracking with is a streaming interface sax - unui se privind date suport doarpentru citire : flux continuu de evenimente caracterizare le – XML applications receive applications ”
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Efort independent de standardizare condus sax www.saxproject.org : caracterizare – ă de de cel evenimente a proces al Consor ă rii ț XML iului Web –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ implementare implementare de referință înlimbajulJava: L suport pentru pentru suport arg acceptat sax SAX SAX : caracterizare spa ca standard industrial 2.0 1.0 ț ii de ( ( 2004 1998 nume ) ) + extensii org.xml.sax
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ – î nceput instruc va Pentru fi de o emis ț de iune fiecare tag func un sax de , sf eveniment ț ie procesare : â tip de / r procesare ș metod it de construc tag ă care , ( comentariu handler , date ( va ț ie fi con tratat XML ) ț ,... inut – ) ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Func de c ă ț iile tre de / programator metodele construc sax : procesare ț ie de XML XML , tratare pentru î n parte se specific fiecare tip ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ trateaz Minimal, trateaz trateaz ă _ evenim ă ă _ _ evenim evenim trebuie _ apare_ sax _ _ apare_ apar_ definite : tag_ procesare caract tag_sf î nceput func ere â r ș ( it ț ( procesor iile procesor ( procesor / metodele , , tag date , tag , atrib ) ) : ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ date trateaz Minimal, atrib trateaz trateaz = caracterele dintre ă _ = evenim lista ă tag ă _ _ evenim evenim trebuie = numele = numele atributelor _ apare_ sax _ _ procesoruluiXML apare_ apar_ definite : tag_ procesare elementului elementului tag instanța instanța ata caract tag_sf - î ului de început șicel de final ului nceput ș ate func ere â tag r ș ( it ț ( procesor procesat iile - procesor ( ului procesor / metodele de , î , nceput tag date , tag , atrib ) ) : ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ set_element_handler set_character_data_handler PHP: p se î nceput ata entru ș eaz , a ă fiecare tag una din - ului sax ( ( trateaz trateaz trateaz eveniment tre de sf : procesare func â definite de ă ă ă r _ _ ș _ ț evenim_apar evenim_apare iile evenim_apare func it de ș i de ț a ii apari datelor sau tratare programator metode ț ie _ - a caract , _ _ con tag_ tag_sf respectiv tag ț - inut î ului nceput ere â r , ș ) it de : ) , Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Aplica client ț ie p rogramul apelare handler apelare Instan ini apari apari ț î iere produse handler nceput handler ț final de ierea - ț ț elor ie ie procesare eveniment eveniment consum de de etc. tag tag : notificare parse ) ( de Procesare evenimente ă 🖥️ procesorul trimite ș SAX i trateaz Procesor ă SAX SAX evenimente ( parser
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.saxproject.org/apidoc/org/xml/sax/package Implementarea sax de : referin detalii la procesare ță (Java): org.xml.sax - summary.html
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ I nterfe început de document, dedocument, început ț e standard ce fi standard ce pot tag rezolvă notificări deevenimenterezolvănotificări vizând tipul vizând tipul de sfârșit, sfârșitde documentetc. sax Content : procesare construc tag implementate Handler de început, date textuale, date textuale, de început, țiilor XML: de programator : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ I nterfe ț e specificate unui specificate în cadrul standard ce fi standard ce pot con sax ține lista atributelor ține listaatributelor : Attributes procesare implementate tag de început de început de programator : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ I nterfe via metode via metode a ( de tratare evenimentelor ț e standard ce fi standard ce pot desemnează citirea datelor XML sax : XMLReader procesare implementate de callback programator - uri) : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ I nterfe ț e standard ce fi standard ce pot a erorilor (fatale) șiavertismentelor (fatale) a erorilor SAXException pot fi emise pot fi excepții precum specifică specifică maniera de tratare sax ErrorHandler : procesare și implementate SAXParseException de programator : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ de undese XML( datele preiau încapsulează încapsulează informații despreo sursă deintrare C las a definită definită de specificația SAX sax InputSource : procesare e.g. , flux decaractere) flux , :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ public } public public // public public public public // public public public public // throws throws procesarea stabilirea furnizarea interface void void void void void void ErrorHandler EntityResolver DTDHandler ContentHandler oferită de java.io.IOException java.io.IOException diverselor parse parse setErrorHandler setEntityResolver setDTDHandler setContentHandler de Exemplificare propriu XMLReader informații ( ( String InputSource Apache Xerces Apache - zisă funcționalități getDTDHandler getContentHandler getErrorHandler getEntityResolver uri despre { via ( ) DTDHandler ( , , ErrorHandler un SAXException SAXException ( : // // consultarea EntityResolver ( in interfa ContentHandler obiect document ) (); – InputSource (); ț dtdHandler a xerces.apache.org (); errHandler (); XMLReader ; ; datelor XML evenimente via resolver contentHandler ); sau ); ); un URI );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ public } Exemplificare public public public // public public public // public public public informații evenimente interface void void void void void void void void void endPrefixMapping startPrefixMapping ignorableWhitespace characters endElement startElement endDocument startDocument setDocumentLocator suplimentare ContentHandler – minimal, : interfa ( char ( vor String ( ce String throws throws throws throws throws Attributes () ț () a throws pot buf fi throws ContentHandler { { ( implementate String ( uri [], String uri fi ( SAXException SAXException SAXException SAXException SAXException ( Locator char , preluate int , // String SAXException String attributes SAXException procesarea offset prefix prefix buf localName locator [], localName din , ) , int aceste int String ) documentul throws ; ; ; ; ; length offset construcțiilor ); ; (Apache (Apache ; 3 uri , , metode: String , ) String SAXException ) int length procesat qName qName Xerces XML ) ) , ; ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ public } public public public // public public public // public public public // public public public acces acces acces Exemplificare interface String String int String String int String String String String String int via via la informațiile spații nume getValue getType getValue getType getURI getLocalName getQName getValue getType getIndex getIndex getLength Attributes de calificate ( nume : int ( ( ( interfa privitoare ( ( int String String ( ( ( String String String String int (); ( index { int index index // XML ( prefix:nume index ( lungimea int qName uri qName uri ); qName uri ț ); a , ); index la , , String ); String // String Attributes numele // atributele // // // ); ); ); URI tipul prefix valoarea ); listei // localName ) localName localName - numele ul atributului atributului de atribute de ale spațiu spațiului unui atributului (Apache (Apache propriu ); de element ); ); de nume nume - zis unui Xerces XML + al nume atributului element ) atrib
Dr. Sabin Buragaprofs.info.uaic.ro/~. busaco/ Expat libxml inclus (C, C++,Lua,.NET, de prelucrare (DOM, SAX etc.): SAX etc.): (DOM, de prelucrare MSSAX lxml – – procesor XML cu suport pentru diverse metode pentru suport XML cu procesor bibliotecă î n SDK ( MSXML – bibliotecă – sax proces open source : implement ă Objective ri Python SAX Software DevelopmentKit Software î n C : : C, C++, C, : - launchpad.net/ C, Perl, , C++, JavaScript; libexpat.github.io ă ri Haskell Python lxml , , Ruby Scala, ) ) …
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ NSXMLParser developer.apple.com/documentation/foundation/ saxophonist QSAX sax org.xml.sax - REXML wasm – parte a parte – sax implementare implementare , – sax – procesor scris în procesor procesor – mediului : implement - API de API js , xml referin - XML de artist artist Objective dezvoltare pentru ță – WebAssembly ă module Node.js pentru ri - C + Swift C +Swift (Apple) Ruby Qt Java xmlparser (C++)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ xml.sax XML::Parser xml_*() Xerces SAX API Xerces xml erlsom – – – Python pachet pachet func sax – , ț xmerl_eventp modul ii PHP – : Go docs.python.org/3/ : implement platform : xml.apache.org golang.org/ : Perl php.net/manual/en/ bazat ă XML – module pkg pe pentru / library ă procesorul encoding ri Erlang book.xml.php /xml.sax.html C++ / xml ș i Expat Java: /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ parseXML.php subiecte web Procesarea cu SAX în PHP 7.4+ adatelor XML sax - test.xml pentru a generaoreprezentare HTML - test.php : implement – – clasa pentru prelucrarea documentelor XML documentelor prelucrarea clasa pentru document XML modelând date XML de intrare document – program afișând subiectele unor teste unorteste afișând subiectele program ă ri de studiat exemplele – exemplificare exemplificare din arhivă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ class } function } function private private private private // private if $ $ $ $ fiindcă this this this this xml_parser_free ( $ parseXML this - - - - > > > > array array string string $ close_tags open_tags html_code xml_file - xml_proc __construct __ procesorul > xml_parser destruct $ $ $ $ close_tags open_tags html_code xml_file { = ; "" ( = = $ // () = ; this PHP () []; "" instanța []; { ) { ; ; - ; > ; nu ; xml_parser poate // // // // // // analizorului destructor constructor mulțimea mulțimea codul numele verifica ); HTML fișierului tag tag XML apartenența generat - - urilor urilor clasa implementând clasa implementând (nu documentelor XML XML ce va fi fi procesat XML va ce precizăm de de prelucrarea sfârșit început la tipul tipul, resource ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ public pentrutablourilor substituție de asignarea// tip // metode de } public // } public // } public } return $ $ $ oferă numele stabilirea this this this - - - function > function > function > function reprezentarea $ xml_file close_tags open_tags this - > html_code set_open_tags setter get_html_code set_xml_file set_close_tags = $file = = documentului $ / $ getter generată tags tags ; ; ; ; ( string ( array (): ( array string XML $file $ $ tags tags ce va fi procesatfi va ce ) { { ) ) { tag { - urile urile de început/sfârșit
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } private // // } private // } private // $ if if incluse tratarea tratarea tratarea this $ $ ( ( this this $format $format - > - - function function function > > html_code html_code html_code între evenimentului evenimentului evenimentului = = $ $ tag this this character_data end_element start_element - ul - - .= > > .= .= close_tags open_tags de $data $format $format început de de de ; apariție apariție apariție ( $ ( ; ; $ parser [ ( [ $ parser $ și $ name parser name cel a a a , unui caracterelor unui de , ]) string ]) string , // există există // string // există există // sfârșit tag tag $ $ name de de name $data substituient substituient început sfârșit ) , ) { array { $ attrs pentru pentru ) { tag tag ? ? Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } } public // } while if xml_set_character_data_handler xml_set_element_handler // xml_parser_set_option // xml_set_object // $ // class this if stabilim stabilim înregist (( parse die XML_OPTION_CASE_FOLDING, ( $fp xml_get_current_line_number xml_error_string xml_parse - ( > function ( sprintf $data xml_parser = () fopen . funcțiile diverse funcții. ( = "XML fread parse ( ( $ $ ( this $ this this de opțiuni = de error ( () - $fp - xml_parser_create ( > analiză > - xml_get_error_code tratare { xml_file > xml_parser xml_parser , // ( : $ 4096 procesarea this %s ( ( tag $ this " a a at - )) start_element - , > urile evenim evenimentelor "r" xml_parser { line - > // ( , )) xml_parser $ ( procesăm , $data $ false this nu $ %d" === this this propriu . sunt SAX - (); > ); - , false , > ); xml_parser feof xml_parser ( // , $ " rescrise // (metodele , this instanțiem - ) fragm , zisă ( " eroare $fp die end_element - > )) ( a xml_parser "open . de === datelor , cu de ))); " character_data obiectului date procesorul false caractere procesare error XML " XML ) ); )), " ); curent) mari) XML " ); Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ]; $ ]; $ // require declare // echo $ $ $ $ $ parser parser parser parser parser close_tags open_tags 'subiect' 'subiecte' 'subiect' 'subiecte' substituția programul $ parser ( ( - - - - " strict_types = > > > > parseXML.php parse set_close_tags set_open_tags set_xml_file new => => => => = = PHP elementelor - " "
- test.xml propunerile două (); cu > \ n \ n " cod , " , tablouri ' ); ); ); HTML // // // redarea procesarea instanțiem de asociative subiecte rezultatului analizorul datelor de teste XML SAX scrise
- al reprezentării HTML docs generateSAX prin dintr /Web/CSS/::marker arborele DOM - o listă < ul > /
- < < < channel rss rss channel language description title xml -- < < Mashups pubDate description title > version alte description > & version https://www.programmableweb.com/rss_blog ProgrammableWeb.com lt; > > elemente 11 https://www.programmableweb.com/news/ 11 > p > > - popular = Popular en > , "2.0" > = Apps Sun, The > language datele de intraremodelate de documentul RSS
- xml:base leading 04 - and marketplace encoding Marketplace Apr and the -- > 2021 source sellers > = Web "https://www.programmableweb.com/rss_blog" = the news Platform title - world 0400 and > ! & lt > ; / p around > > ; APIs , >
- news desc // , - – > $ a URL \ title news " survenit > programare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ procesarea extragerea ( procesorul necesitatea C â unor unor nd sax poate SAX documente informa abandon vs. poate fi folosit ț dom ii de ă fi rii de oprit mici proces mari SAX? oric dimensiuni dimensiuni ă â rii nd )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ utilizarea ( memorie crearea î n C unei contextul sc â nd ă zut structuri sax poate ă , l ă unor rgime vs. fi noi folosit dom resurse de band de XML document SAX? de ă calcul î ngust reduse ă ,...)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ developer.android.com/reference/ utilizarea developer.apple.com/library/archive/ ( memorie crearea cod demonstrativ cod demonstrativ î n exemplificare exemplificare C unei contextul sc â nd ă zut structuri sax poate ă , l ă pentru unor rgime vs. fi pentru javax noi folosit dom resurse iOS de band /xml/parsers/SAXParser.html de XML document samplecode Android – SAX? SeismicXML de ă calcul î / ngust SeismicXML : reduse ă ,...) : /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ validarea aplicare de foi de foi CSS aplicare de stiluri accesul filtrarea direct la direct C datelor â nd complex proces poate sax XML datele ă vs. ri prin fi ă dintr sofisticate a utilizat datelor dom DTD, XML Schema Schema DTD, XML etc. - + un document XML document un transform DOM? via XPath ă ri XSL
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ necesitatea î n î n cadrul contextul via modific navigatorului C â transferuri nd proces ă poate sax rii ă și/sau rii vs. Web, date Web, asincrone fi datelor utilizat salv dom ă XML rii ob prin DOM? documentelor ț /HTML inute Ajax eventual direct XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ DOM complet î a n documentului vederea necesit ca arbore ca ă în memorie ă înmemorie ă proces î nc ă XML rcarea ă rii sax AsideElement vs. HTML dom Text BodyElement HtmlElement HTML HTML DivElement ImageElement HTML HTML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ start SAX tag efectu preia start tag fragmente ân ( ș du ir sax characters - de se o evenimente vs. prelucrare reduse dom end din document, tag ) liniar end ă tag
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ modulul modulul Invers, pentru pentru dom arborii - js SAX a se generarea (Node.js), (Node.js), sax exemplific emite poate DOM pot fi vs. evenimente fi biblioteca dom de utilizat ă r arbori i : traversa lxml DOM SAX (Python) ț i
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ m aniera Î n contextul cazul de unor procesare proces apari sax structuri ț ă iei rile SAX rile SAX vs. unui SAX dom anumit XML poate ignor sofisticate ă fi element inadecvat , ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Ce ]> exemplificare - urm ar ar ( ( #PCDATA categ fi preta ă foarte torul + )> , dac DTD: | mare? categ ă num ) * > ă rul de
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru Unele implement valid ș sax ă i ri transform de expresiidate, vs. ă ri dom SAX ă ri ofer ă suport XPath
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ U zual se folosesc , în funcție de necesități, sax vs. ș i DOM dom ș i SAX
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Exist ă a documentelor ș i alte metode de XML? procesare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Procesarea XPP procesare „ legarea – alternative: XML Pull Parsing documentelor ” datelor simplificat XML ă XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Stiluri push de alternative = aplica procesorul proces ț ia ( asupra parsing eventsparsing ă ri XML cite XML XML : evenimentelor xml conduse ș te pull ) – date XML SAX parsing de survenite evenimente ș avansat i notific ă : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Stiluri push ele programul apar de alternative = aplica procesorul proces a ș a cum ț ia nu ( asupra parsing eventsparsing ă poate ri sunt XML cite XML XML : evenimentelor xml face face trimise conduse cereri ș te pull ) – ( date XML push SAX de parsing de ) de ) evenimente survenite evenimente procesor ș avansat i notific ă : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pull Stiluri solicita = aplica de alternative ( pull proces ț ia ) controleaz procesorului XPP ă ri – XML XML XML Pull Parsing : xml ă maniera conduse urm pull ă torul de parsing de procesare eveniment evenimente avansat ș i XML poate : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pull Stiluri solicita = reflect aplica de alternative structura ( pull ă proces ț ia structura ) controleaz procesorului XPP codului ă ri – XML XML documentului XML Pull Parsing : xml ă - surs maniera conduse urm ă pull ă al torul programului de XML parsing de procesare eveniment evenimente prelucrat avansat ș i XML poate : Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ StAX Oracle xml Woodstox – docs.oracle.com/ Aalto Streaming API forXML StAX pull exemple – – github.com/ – inclus parsing github.com/ de implement î n XDK javase FasterXML – FasterXML / tutorial ( implementări XML Developer (Java) / / ă aalto jaxp ri / woodstox : / stax - xml – avansat JSR 173 / ’ s Kit s )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ QXmlStreamReader de expresii de expresii developer.android.com/reference/org/ XmlPullParser saxpath xml pull xml.dom.pulldom pull – XPath – modul Node.js Node.js evaluarea permițând modul pachet Scala Scala pachet parsing , QXmlStreamWriter – pentru un flux de evenimente deevenimente flux un SAX pentru interfață JavaAndroid pentru interfață d – – e procesare XPP e procesare soluție implementări xmlpull din mediul Python /v1/ XmlPullParser avansat Qt (C++)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Clasificare pull ( XPP controlul secven , .NET .NET , direct direct a manierelor mod de alternative XmlTextReader ț fluxului arborescent ial v liniar ersus accesare de evenimente (SAX, XPP)(SAX, de ( procesare DOM ) : vs. push ) avansat : ( SAX XML )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
DBMS -- … „ -- Legarea > baze ” Id data sets de date: 3 2 1 ( tables datelor … … … P … … … ) A ( alternative … … … XML binding S XML XML XML de infoset ( arbore DOM în în memorie) alte ) surse dataset avansat de date fișier fișier XML -- … -- > Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ tipul tipul standardul recurgerea la predicate + funcții specifice specifice XML +funcții la predicate recurgerea baze XML suplimentar, suport pentru JSON pentru suport suplimentar, de date: pentru valoriale câmpurilor tabelelor pentru SQL:2016 specificația specificația aspecte aspecte de interes: alternative XML binding XML - 14 (ISO/IEC 9075:2016) (ISO/IEC 14 infoset SQL/XML dataset avansat Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ docs.microsoft.com/en www.postgresql.org/docs/current/static/functions docs.oracle.com/ baze a se consulta și a se consulta XML Data XML Data a se studia și clasa de date: XML implementări implementări concrete: pureXML Functions javase - Oracle XML Oracle us (Microsoft SQL Server) (Microsoft / XML dotnet / tutorial SQLXML (IBM DB2) (IBM / api infoset ( PostgreSQL SqlXml / / jdbc system.data.sqltypes.sqlxml DB / basics (J2SE 8+) (.NET) dataset /sqlxml.html ) avansat - xml.html
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ date XML ( serialization abordare alternative XML binding clase obiectual , marshalling create create „ din ă : zbor ) ”
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ docs.microsoft.com/en C++, C#, JS – node Python .NET (C# Go date XML - C++ developers.google.com/protocol xml2js , Java, PHP – - Scala us – Untangle / abordare dotnet cereal : Ruby et al. – github.com/ – extensia extensia /standard/ scalaxb clase exemple: ) : , uscilab.github.io/ Python – : github.com/ clasa obiectual serialization create Leonidas SimpleXML : scalaxb.org ,… XmlSerializer – „ stchris - din / ă introducing Protocol from - : buffers cereal zbor - XIV/node / untangle / / avansat - ” xml Buffers - serialization - xml2js
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ docs.microsoft.com/dotnet/standard/ LINQ direct ( interog Language Language î n alternative ă limbajul XML binding ri asupra INtegrated de datelor programare linq Query / linq XML - xml ) – avansat - .NET overview
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ de implement experiment JAXB tutorial – Java Architecture for XML Binding for ArchitectureJava a r ea de referință at și : docs.oracle.com/ jcp.org/en/ EclipseLink alternative XML binding jsr : / detail?id github.com/eclipse : www.eclipse.org/eclipselink/ javase =222 / tutorial avansat (JSR / jaxb - ee4j/ - / 222) jaxb - ri Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interoperabilitatecu alte formate xml2json JSON Apache Apache exemplificări șibiblioteci: exemplificări de instrumente - lib (Node.js), (Node.js), nu existăo metodă standardizată (Java), Camel ruby alternative (Java), XML binding xml - xml - to js2xmlparser js2xmlparser - - to json - json (Haskell), , x2js : XML : ( (Node.js), (Node.js), JavaScript xmlutils.py avansat JSON ),
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ procesarea Procesarea unui î n document XML (de document direct manier diferit alternative XML î scop n ă ă memorie de DOM obiectual : simplificat , ă mici , dimensiuni ă )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ atributele via fiec o Procesarea ă structur rui XML element asociate o proprietate a obiect a unui o proprietate ă alternative de date elementelor XML – î i poate i poate corespunde e.g. simplificat , XML pot fi m fi XML pot tablou asociativ ă odelate
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.php.net/manual/en/book.xmlreader.php www.php.net/manual/en/book.xmlwriter.php php.net/manual/ Procesarea alternative extensii extensii PHP XMLReader SimpleXML XMLWriter en XML / book.simplexml.php simplificat : ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } foreach // $ // } foreach // xml echo similar, } if afișăm încărcăm echo ( $ = proj simplexml_load_file '
' ( ( $ $ '
' descrierile [ dar xml xml ' class documentul . utilizând - - $ . > > proj $ xpath project ' ] proj == - > proiectelor - 'M' desc > ( "// desc XPath as ) XML project { $ . proj '
' ( . ' http://web.info/projects.xml '' ) de [@class='M']" { ; ; clasă exemplele din arhivă de consultat de consultat M ) as $ proj ) { ' );Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Folosirea RSS ( news XPath simple xml simple feed pentru procesarea unui fluxde știri ) via SimpleXML : exemplul #1 exemplul oferitde PHP
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ < <
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ try } function // define define } catch } } foreach // $ // return generează xml echo $
xml însemnările getMessage o documentul = , \ legătură - " ' > , https://tympanus.net/codrops/feed/ $ xpath ' url ( / xsl $ ( $ rss class $ news news url \ " / channel title class , : (XPATH) =' $ HTML (elementele - (); - newsTitle > > news xpath XML = $e description link \ =' " ) $ (FEED); info { /item newsTitle spre , ’> pe $ news as '> baza , ' $ resursă, ); $ $ categ$ category categ RSS) furnizat o section ' excepție inclusiv );" = // // '' expresia URL [ ) 0 >" { ] ?? ; - descrierea ul 'N/A' știrilor XPath ); . RSS ei utilizatăDr. Sabin Buragaprofs.info.uaic.ro/~busaco/ documentul HTML generat HTML documentul baza pe datelor RSS xsl : xpath – programare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ feed.rss.xml (document XML) rss2json.php rss2json.php o reprezentareJSON a datelor deinteres Preluarea unei știri dintr – simple xml simple document XMLmodelând știri oferitedeunsit – programul PHPde conversieadatelor programul pentru ageneraprin program : exemplul #2 #2 exemplul de studiat exemplele din arhivă - un fluxRSS
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ // // $ // $ // $ define echo header // $ $ $ json json json news xml json trimitem 'link' obiectul folosim procesăm = $ = .= .= .= ( json ( 'FEED' (adresa = @ " '' " " "{ Content $ ; simplexml_load_file o xml \ \ // JSON datele " " \ ; " date link expresie date simplicat title , - > ' Web) programmable \ xpath " \ \ - " va " JSON type spre : : : \ " \ \ include " " " și XPath " ( " : "//item" . datele client . application . $ ' generate pubDate $ $ news news news pentru proprietățile folosind XML (FEED); )[ - - - > - web 0 > > link ]; ' pubDate title prin (data (aici, / a json - feed.rss . prelua . " program câmpul \ " " publicării) ; \ cele ," " charset ' ," title ; . ; " prima ' \ dintr ); " ' MIME }" (titlul ; =utf - un preluate dinRSS știre (Media știrii), - 8 document " ); din fluxul Type RSS) ) RSS adecvat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } { datele JSON generate pe programulexecutatPHP serverpe "date" "link" " title " : : : " "11 "Sun, https://www.programmableweb.com/news/.../2021/04/04 Popular și trimise prin HTTP clientului Web clientului și trimise HTTPprin 04 Apr Marketplace 2021 19:35:25 APIs - 0400" " , " ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ XmlTextReader Procesarea XML::Simple libxml XmlSimple alte exemplificări alternative (C, C++ + + XML XmlTextWriter XML::Writer ș i alte ( simplificat Ruby limbaje ) : (Perl) (.NET) ) avansat ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ xmlReader clasa pentru un Procesarea modulul modulul XmlReader „ cititor oferit de biblioteca deoferit biblioteca consultare XMLReader xmlreader alternative ” ( exemple: reader oferit XML , se , ă pentru Node.js pentru simplificat (PHP) de .NET ): poate XMLReader libxml (C# folosit (C etal. ă et al. ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ xmlWriter un pentru Procesarea modulul modulul „ clasa scriitor din cadrul bibliotecii bibliotecii din cadrul generare XmlWriter XMLWriter xml alternative exemplificări: ” - ( writer writer XML , se , pentru pentru Node.js pentru (PHP) simplificat ): poate XMLWriter libxml .NET utiliza (C ă et al. )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Cum potfi Cum procesate documenteleHTML ?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ respectarea regulilor minimale minimale marcajele privind regulilor respectarea documente bine formatate( conform unei scheme unei de validareconform ignorarea erorilorde sintaxă procesare Aspect de interes: documente valide versus html well formed – e.g. , DTD , )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ignorarea erorilorde sintaxă procesare malformed Aspect de interes: markup html
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ procesare html
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ documentele HTML sunt scrise/generatecorect sunt relativrarecazurile încare procesare Realitate: html
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Tehnica folosită uzual prin prelucrarea prelucrarea prin extragerea datelor de datelor extragerea interes procesare a marcajelor HTML a marcajelor Web – scraping de obicei, empirică empirică de obicei, – html nerecomandată –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ un exemplu recurgând la expresii la expresii regulate recurgând un exemplu Tehnica folosită uzual prin prelucrarea prelucrarea prin webscraping.pro/ extragerea datelor de datelor extragerea interes procesare a marcajelor HTML a marcajelor Web scraping – scraping de obicei, empirică empirică de obicei, – - in html nerecomandată - php - with - curl / –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ traversarea (procesarea) unei pagini Web unei traversareapagini Web (procesarea) detectarea și repararea erorilor sintactice sintactice ( șidetectarea reparareaerorilor Recurgerea laun procesor HTML/XML specific procesare scopuri importante: scopuri + html veziși cursurile anterioare – HTML cleanHTML e.g. , via DOM , )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Beautiful Soup Beautiful html5lib html5lib github.com/ HAP ( HAP www.crummy.com/software/BeautifulSoup/ procesare jsoup – Html procesare + procesare PuerkitoBio goquery – / Agility bibliotecă Java pentru HTML5 Java pentru bibliotecă Scrapy html github.com/html5lib / și goquery html Pack) serializare - soup agility jsoup.org – bibliotecă/ • - – : instrumente – pack.net github.com/anaskhan96/ biblioteci biblioteci bibliotecă .NET(C#) bibliotecă HTML pentru HTML pentru framework • Go scrapy.org Python Python soup
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Masterminds procesare ( ScrAPIr macOS github.com/ SwiftSoup github.com/ HTML5 Parse5 github.com/ , github.com/ iOS – implementare implementare , html tvOS - Masterminds PHP – tarfahalrashed – modul Node.js modul scinfu bibliotecă Swift bibliotecă inikulin , – watchOS : instrumente procesor HTML5 înPHP procesor / SwiftSoup /parse5 /html5 / JavaScript ScrAPIr + Linux) - php
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ NekoHTML (inclusiv vizând atacuri deXSS vizând atacuri tip (inclusiv HTML HtmlCleaner Validator.nu cu suport pentru rezolvarea erorilor sintactice rezolvarea erorilor pentru cu suport Purifier cu semnalarea erorilor de sintaxă HTML5 cu semnalarea erorilor procesare cu implementări înPHP și cu implementări corectarea marcajelor HTML eronate marcajelor corectarea – procesor Java pentru HTML bazat pe pe HTML bazat Java pentru procesor – – – instrument implementat instrument implementat în Java pentru verificare + filtrare a verificare + filtrare a marcajelor HTML procesor Java folosindDOM oriSAX procesor html : instrumente – Objective Cross Site Cross - C Scripting Xerces )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru PHP, pentru procesare – P denumire reluarea se recurge la biblioteca biblioteca la se recurge (invalide) disponibil datelor , coddebare simplehtmldom.sourceforge.io html oferite de un sit Web de sit Web de profil oferite un despre : instrumente ă sub licență deschisă licență ( ă sub și preț Simple HTML DOM Parser DOM HTML Simple produse – din documente HTML din documente ( albume – exemplu open musicale) source ) Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ procesare html : instrumente ( malformed incorect! markup )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ foreach $ define require_once } cai_produse printf $ $ $ $ "metal/ "clasica/clasica "jazz/jazz "pop URL cod pret cod_bare prod html - ( ( de rock/rock 'URL' = . "
%s, > [ prod - - psihedelic/pink find - 1/bach // simone ='Detalii' căile , ( ( " " $ ( (URL span.alb ": as cod_bare " - , simply spre " - - $ $cale diamond silk , html $ . href html $cale - produse soul " ) - - ='%s'>%s > , - bach , { floyd - 0 find > $ ); ) // - find pret - preț: - vinyl.html" graveyard > preluăm ' plaintext ( - ); " - cd.html" the ( ); span.price (i.e. " %d span.barcode - wall documentele RON.
" date - ; , & vinyl , - dvd.html" ndash " despre , ' - ); 0 1.html" ) // - ; " > , , URL plaintext 0 HTML , ) fiecare - > - ]; plaintext ul sitului procesate) )[ produs 0 ]; )[ sursă 1 ];Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ reprezentareaa datelor HTML preluate deWeb situl pe procesare html : instrumente
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instrumentede prelucrarea documentelor HTML procesări procesări XML: mulțumiri lui Andrei Panu, PhD lui Andrei mulțumiri de la rezumat ⦑ SAX ⦒ la XPP și Simple XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ împachetare date sistem SOAP expeditor ( codificare XML episodul viitor: protocolde transport ✉ sender ) → orice tip de date legare ( (intermediari) mesaj SOAPmesaj servicii Webservicii Internet binding ) → despachetaredate decodificare XML destinatar ( sistem SOAP prin SOAP protocolde transport ✉ receiver )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
- < < < channel rss rss channel language description title xml -- < < Mashups pubDate description title > version alte description > & version https://www.programmableweb.com/rss_blog ProgrammableWeb.com lt; > > elemente 11 https://www.programmableweb.com/news/ 11 > p > > - popular = Popular en > , "2.0" > = Apps Sun, The > language datele de intraremodelate de documentul RSS
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pseudo - cu elementul elementul CSS a developer.mozilla.org/ unui element unui element ::marker desemnează marcajuldesemnează redăriiasociat