Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...

33
Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wyklad 05 T. Roma´ nczukiewicz Jagiellonian University 2009/2010 T. Roma´ nczukiewicz XML 05

Transcript of Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...

Plan

Przetwarzanie dokumentów XMLi zaawansowane techniki WWW

Wykład 05

T. Romanczukiewicz

Jagiellonian University

2009/2010

T. Romanczukiewicz XML 05

Plan

Plan

1 DOM

2 DOM w innych jezykach

3 Podsumowanie

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Plan

1 DOMPrzypomnienieWstepWezłyMetodyXMLHttpRequestHTML DOM

2 DOM w innych jezykach

3 Podsumowanie

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

XML, poprawnie sformuowanieSposoby opisu XML

DTDXML Schema

XPATHSposoby prezentacji

CSSXSLT

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

DOM

DOM

DOM W3C Document Object Model jest niezaleznym od jezyka i platformy interfejsempozwalajacym programom i skryptom na dostep i zmiany w dokumentach XML.Mozliwosc uzycia w JavaScript, Java, C++, PHP,...

DOM

Core DOM

XML DOM

HTML DOM

DOM i SAX

SAX (ang. Simple API for XML czyli Proste API dla XML-a)interfejs programistyczny do sekwencyjnego parsowania dokumentów XML. Jest tojeden z mechanizmów, który pozwala odczytywac dane zapisane w dokumentach XML.Parser, który implementuje SAX, działa jako parser strumieniowy sterowanyzdarzeniami.Przetwarzanie z uzyciem SAX jest jednokierunkowe - wczesniej przetworzone dane niemoga byc ponownie odczytane bez ponownego uruchomienia całej procedury.

korzystanie z modelu DOM wymaga wczytania całego dokumentu XML dopamieci i przechowywania go tam w postaci struktury drzewiastej — o tym trzebakoniecznie pamietac!nalezy uwazac na DOM przy przetwarzaniu duzych ilosci danych

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

W przeciwienstwie do interfejsu SAX, obiektowy model dokumentu wywodzi sie zkregów konsorcjum W3C.

SAX to oprogramowanie bedace własnoscia publiczna.

DOM jest samym w sobie standardem, tak jak XML.

DOM nie został równiez opracowany wyłacznie dla Javy; jego zadaniem jestreprezentacja zawartosci i modeli dokumentów we wszystkich jezykach inarzedziach programistycznych.

Istnieja interfejsy DOM dla JavaScriptu, Javy, CORBA i innych jezyków. Jest towiec specyfikacja neutralna jezykowo i platformowo.

Danych nie mozna uzyc, dopóki cały dokument nie zostanie przetworzony idodany do wyjsciowej struktury drzewiastej.

Dane wyjsciowe z procesu przetwarzania, które maja zostac wykorzystane przezinterfejsy DOM, maja postac obiektu org.w3c.dom.Document.

Obiekt ten działa jako „procedura obsługi” drzewa, w którym znajduja sie naszedane XML; z punktu widzenia hierarchii elementów obiekt ten znajduje sie jedenpoziom „ponad” elementem głównym dokumentu XML. Kazdy element naszegowejsciowego dokumentu XML jest bezposrednio lub posrednio potomnywzgledem niego.

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Wezły DOM

Cały dokument jest wezłem dokumentu

Kazdy element jest wezłem elementu

Kazdy tekst jest wezłem tekstowym (!)

Wezeł atrybutu

Wezeł komentarza

Uwaga: kazdy tekst przechowywany jest w osobnym wezle:<year>2005</year> - wezeł elementu <year> zawiera wezeł tekstowy 2005

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Wezeł Document Poniewaz Document to czesc samego wezła Node, mozemyuzywac go wymiennie z innymi typami wezłów. Stanowi on jednak swoisty„przypadek specjalny”, poniewaz zawiera element główny i definicje DTDdokumentu oraz szereg innych specjalnych informacji nie nalezacych do hierarchiielementów XML. Dlatego przetwarzajac ten wezeł, musimy uzyskac elementgłówny i przekazac go funkcji wyswietlajacej.

Elementy DOM najbardziej typowym zadaniem wykonywanym w aplikacji bedziepobranie wezła DOM Element i wyswietlenie jego nazwy, atrybutów i wartosci, anastepnie jego elementów potomnych. Najpierw pobieramy nazwe elementu(metoda getNodeName()) i wyswietlamy ja.

Wezły tekstowe Parser XML „postrzega” wszystkie dane jako tekst i ze toaplikacja dokonuje w razie potrzeby konwersji typów. Tak wiec aby wyswietlicwartosci elementów w DOM-ie, nalezy skupic uwage na interfejsach Text iCDATASection. Wyswietlanie wartosci jest całkiem proste — korzystamy zeznanej juz metody getNodeValue() interfejsu DOM Node.

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Ładowanie pliku XML

Listing 1: Przykład1.js

1 if (window.XMLHttpRequest)2 {3 xhttp=new XMLHttpRequest();4 }5 else / / I n t e r n e t E x p l o r e r 5 / 66 {7 xhttp=new ActiveXObject("Microsoft.XMLHTTP");8 }9 xhttp.open("GET","books.xml",false);

10 xhttp.send("");11 xmlDoc=xhttp.responseXML;

Utworzenie obiektu XMLHTTP

Otworzenie objektu XMLHTTP

Wysłanie zapytania XML HTTP do serwera

Przekazanie odpowiedzi jako objekt XML DOM

Ze wzgledów bezpieczenstwa plik XML musi sie znajdowac na tym samym serwerzeco strona www.

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Listing 2: Przykład1.js

1 function loadXMLString(txt)2 {3 if (window.DOMParser)4 {5 parser=new DOMParser();6 xmlDoc=parser.parseFromString(txt,"text/xml");7 }8 else / / I n t e r n e t E x p l o r e r9 {

10 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");11 xmlDoc.async="false";12 xmlDoc.loadXML(txt);13 }14 return xmlDoc;15 }

Uwaga na IE: Internet Explorer białe znaki nie traktuje jak wezły tekstowe inneprzegladari tak

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Ładowanie tekstuXML

Listing 3: Przykład1.html

1 <html>2 <head>3 <script type="text/javascript" src="loadxmlstring.js"></script>4 </head>5 <body>6 <script type="text/javascript">7 text="<bookstore><book>";8 text=text+"<title>Everyday Italian</title>";9 text=text+"<author>Giada De Laurentiis</author>";

10 text=text+"<year>2005</year>";11 text=text+"</book></bookstore>";1213 xmlDoc=loadXMLString(text);1415 document.write(xmlDoc.getElementsByTagName("title")[0].childNodes[0].

nodeValue);16 document.write("<br />");17 document.write(xmlDoc.getElementsByTagName("author")[0].childNodes[0].

nodeValue);18 document.write("<br />");19 document.write(xmlDoc.getElementsByTagName("year")[0].childNodes[0].

nodeValue);20 </script>21 </body>22 </html>

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Interfejs prgoramistyczny

DOM

Własnoscix.nodeName - nazwa wezła xx.nodeValue - Wartosc xx.parentNode - Rodzic xx.childNodes - Potomek wezła xx.attributes - atrybuty x

Metodyx.getElementsByTagName(name) - zwróc wszystkie elementy o podanej nazwiex.appendChild(node) - Dodaj potomka do wezła xx.removeChild(node) - Usun potomka z wezła x

Przykładowe wywołanie w JavaScript:txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

xmlDoc - obiekt DOM utworzony przez parser

getElementsByTagName("title")[0] - pierwszy element <title>

childNodes[0] - pierwszy potomek elementu <title> (wezeł tekstowy)

nodeValue - wartosc tego elementu (sam tekst)

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Listing 4: Node List wypisanie wszystkich elementów

1 xmlDoc=loadXMLDoc("books.xml");2 x=xmlDoc.getElementsByTagName("title");34 for (i=0;i<x.length;i++) {5 document.write(x[i].childNodes[0].nodeValue);6 document.write("<br />");7 }

Metoda node.getElementsByTagName("tagname"); zwraca liste elementów o podanejnazwie.

Listing 5: Wypisanie tylko wezłów elementu nodeType

1 xmlDoc=loadXMLDoc("books.xml");2 x=xmlDoc.documentElement.childNodes;34 for (i=0;i<x.length;i++) {5 if (x[i].nodeType==1) document.write(x[i].nodeName);6 document.write("<br />");7 }8 }

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Listing 6: Wypisanie nazw elementu book

1 xmlDoc=loadXMLDoc("books.xml");23 x=xmlDoc.getElementsByTagName("book")[0].childNodes;4 y=xmlDoc.getElementsByTagName("book")[0].firstChild;56 for (i=0;i<x.length;i++)7 {8 if (y.nodeType==1)9 { / / P r o c e s s o n l y e l e m e n t nodes ( t y p e 1 )

10 document.write(y.nodeName + "<br />");11 }12 y=y.nextSibling;13 }

Listing 7: Wydruk

1 title2 author3 year4 price

Załadowanie pliku "books.xml" do obiektu xmlDoc;wczytanie wezłów potomnych pierwszego elementu book;Ustawinenie zmiennej "y" na childNodes[0];dla kazdego wezła potomka "y" sprawdzenie typu, jesli typ 1 (czyli wezełelementu) to wypisanie elementuprzejscie do nastepnego elementu rodzenstwa

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Typy wezłów1 ELEMENT_NODE

2 ATTRIBUTE_NODE

3 TEXT_NODE

4 CDATA_SECTION_NODE

5 ENTITY_REFERENCE_NODE

6 ENTITY_NODE

7 PROCESSING_INSTRUCTION_NODE

8 COMMENT_NODE

9 DOCUMENT_NODE

10 DOCUMENT_TYPE_NODE

11 DOCUMENT_FRAGMENT_NODE

12 NOTATION_NODE

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Trawersowanie wezłów drzewaPrzechodzenie po wszystkich wezłach

Listing 8: Trawersowanie.html

1 <html><head>2 <script type="text/javascript" src="loadxmlstring.js"></script>3 </head>4 <body>5 <script type="text/javascript">6 text="<book>";7 text=text+"<title>Everyday Italian</title>";8 text=text+"<author>Giada De Laurentiis</author>";9 text=text+"<year>2005</year>";

10 text=text+"</book>";1112 xmlDoc=loadXMLString(text);1314 // documentElement always represents the root node15 x=xmlDoc.documentElement.childNodes;16 for (i=0;i<x.length;i++)17 {18 document.write(x[i].nodeName);19 document.write(": ");20 document.write(x[i].childNodes[0].nodeValue);21 document.write("<br />");22 }23 </script>24 </body>25 </html>

loadXMLString() ładuje ciag znaków do xmlDocpobranie wezła dziecka z wezła korzeniaDla kazdego dziecka wypisanie teksktu z wezła tekstowegoT. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Nawigacja

Nawigacja

Poruszanie sie po drzewie wykorzysujac relacje pomiedzy wezłami

childNodes

firstChild

lastChild

nextSibling

previousSibling

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

W DOM wszystko jest wezłem.

Kazdy tekst wewnatrz elementu reprezentowany jest jako osobny wezeł tekstowy.Dostep do niego mozna uzyskac poprzez wezeł potomka danego elementu.

1 x=xmlDoc.getElementsByTagName("title")[0];2 y=x.childNodes[0];3 txt=y.nodeValue;

W przeciwienstwie do elementów w DOMie atrybuty posiadaja wartosc i mozna jaodczytac poprzez metode getAttribute() albo bezposrednio poprzez własnoscnodeValue

1 xmlDoc=loadXMLDoc("books.xml");2 txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Zmiana wartosci elementu i atruybutu

Listing 9: Zmiana wartosci

1 xmlDoc=loadXMLDoc("books.xml");23 x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];4 x.nodeValue="Easy Cooking";5 xmlDoc=loadXMLDoc("books.xml");67 x=xmlDoc.getElementsByTagName("book")[0]8 y=x.getAttributeNode("category");9 y.nodeValue="food";

Listing 10: Usuwanie elementu

1 xmlDoc=loadXMLDoc("books.xml");2 y=xmlDoc.getElementsByTagName("book")[0];34 xmlDoc.documentElement.removeChild(y);5 y.parentNode.removeChild(x);67 x=xmlDoc.getElementsByTagName("title")[0];8 y=x.childNodes[0];9 x.removeChild(y);

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Zamiana

Listing 11: Zamiana wartosci

1 xmlDoc=loadXMLDoc("books.xml");23 x=xmlDoc.documentElement;45 / / c r e a t e a book e lemen t , t i t l e e l e m e n t and a t e x t node6 newNode=xmlDoc.createElement("book");7 newTitle=xmlDoc.createElement("title");8 newText=xmlDoc.createTextNode("A Notebook");9

10 / / add t h e t e x t node t o t h e t i t l e node ,11 newTitle.appendChild(newText);12 / / add t h e t i t l e node t o t h e book node13 newNode.appendChild(newTitle);1415 y=xmlDoc.getElementsByTagName("book")[0]16 / / r e p l a c e t h e f i r s t book node w i t h t h e new node17 x.replaceChild(newNode,y);

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Inne przydatne metody:

createElement() tworzy nowy element

appendChild() dodaje nowy element

createAttribute() tworzy nowy atrrybut

setAttributeNode() dodaje nowy atrybut

setAttribute() Ustawia wartosci atrybutu lub go tworzy gdy go nie ma

Listing 12: Przykład

1 xmlDoc=loadXMLDoc("books.xml");2 newel=xmlDoc.createElement("edition");3 x=xmlDoc.getElementsByTagName("book")[0];4 x.appendChild(newel);56 newatt=xmlDoc.createAttribute("edition");7 newatt.nodeValue="first";8 x=xmlDoc.getElementsByTagName("title");9 x[0].setAttributeNode(newatt);

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Inne przydatne metody cd:createTextNode() tworzy element tekstowycreateCDATASection() tworzy sekcje CDATAcreateComment() (no comments)insertBefore() umieszcza wezeł przed podanym potomkieminsertData(offset, string) umieszcza danecloneNode() kopiuje wezeł

Listing 13: Przykład

1 xmlDoc=loadXMLDoc("books.xml");23 newel=xmlDoc.createElement("edition");4 newtext=xmlDoc.createTextNode("first");5 newel.appendChild(newtext);67 x=xmlDoc.getElementsByTagName("book")[0];8 x.appendChild(newel);9

10 newCDATA=xmlDoc.createCDATASection("Special Offer & Book Sale");1112 x=xmlDoc.getElementsByTagName("book")[0];13 x.appendChild(newCDATA);1415 newComment=xmlDoc.createComment("Revised March 2008");1617 x=xmlDoc.getElementsByTagName("book")[0];18 x.appendChild(newComment);

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Własnosci DOM Document

Listing 14: Przykład

1 async, childNodes, doctype, documentElement, documentURI, domConfig, firstChild,2 implementation, inputEncoding, lastChild, nodeName, nodeType, nodeValue,3 strictErrorChecking, text, xml, xmlEncoding, xmlStandalone, xmlVersion

Własnosci DOM Node

Listing 15: Przykład

1 baseURI, childNodes, firstChild, lastChild, localName, namespaceURI,2 nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix,3 previousSibling, textContent, text, xml

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Tworzenie obiektu XMLHttpRequest

Dzieki obiektowi XMLHttpRequest mozna

uaktualniac strone bez jej przeładowania

wysyłac zapyatania do serwera po załadowaniu strony

odczytywac dane z serwera

wysyłac dane na serwer w tle

Listing 16: Przykłady

1 var xmlhttp;2 function loadXMLDoc(url) {3 xmlhttp=null;4 if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); / / code f o r a l l new

b r o w s er s5 else if (window.ActiveXObject) xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

;67 if (xmlhttp!=null){8 xmlhttp.onreadystatechange=state_Change;9 xmlhttp.open("GET",url,true);

10 xmlhttp.send(null);11 }12 else alert("Your browser does not support XMLHTTP.");13 }

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Listing 17: Przykład cd.

1 function state_Change()2 {3 if (xmlhttp.readyState==4)4 { / / 4 = " lo ade d "5 if (xmlhttp.status==200)6 { / / 200 = "OK"7 document.getElementById(’A1’).innerHTML=xmlhttp.status;8 document.getElementById(’A2’).innerHTML=xmlhttp.statusText;9 document.getElementById(’A3’).innerHTML=xmlhttp.responseText;

10 }11 else12 alert("Problem retrieving XML data:" + xmlhttp.statusText);13 }14 }

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

Własnosci XMLHttpRequest

onreadystatechange przechwytywanie zdarzenia kazdorazowej zmiany stanureadyState zwraca wartosc stanu

0 = uninitialized1 = loading3 = interactive4 = complete

responseText zwraca tekst odpowiedzi

responseXML zwraca obiekt XML, który jest przetwarzany przy pomocy DOM

status zwraca numer statusu (np. 404 Not Found", 200 dla ÓK")

statusText zwraca tekst statusu

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie Przypomnienie Wstep Wezły Metody XMLHttpRequest HTML DOM

HTML DOM

HTML DOM

Własnoscix.nodeName - nazwa wezła xx.nodeValue - wartosc xx.parentNode - Rodzic xx.childNodes - Potomek wezła xx.attributes - atrybuty xx.innerHTML - textowa zawartosc wezła x

Metodyx.getElementById(id) - zwróc wszystkie elementy o podanym IDx.getElementsByTagName(name) - zwróc wszystkie elementy o podanej nazwiex.appendChild(node) - Dodaj potomka do wezła xx.removeChild(node) - Usun potomka z wezła x

Przykładowe wywołanie w JavaScript:txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

xmlDoc - obiekt DOM utworzony przez parser

getElementsByTagName("title")[0] - pierwszy element <title>

childNodes[0] - pierwszy potomek elementu <title> (wezeł tekstowy)

nodeValue - wartosc tego elementu (sam tekst)

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie

Plan

1 DOM

2 DOM w innych jezykach

3 Podsumowanie

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie

Model DOM jest niezalezny od platformy i jezyka programowania.

Standard W3C DOM definiuje zespół klas i interfejsów, pozwalajacych na dostepdo struktury dokumentów oraz jej modyfikacje poprzez tworzenie, usuwanie imodyfikacje tzw. wezłów (ang. nodes).Dla wiekszosci jezyków programowania istnieja biblioteki obsługujace DOM dlaplików XML

Apache Xerceslibxml (C++, gnome, PHP)MSXMLApache Xerces (rodzina pakietów : C++, Java, Perl)JAXP (Java API for XML Processing)JDOMVTD-XML Virtual Token Descriptor for eXtensible Markup Language (A "Document-Centric" XML parser)

Standard W3C definiuje interfejsy DOM tylko dla jezyków JavaScript i Java.

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie

Listing 18: PHP Example

1 function getLinks($link)2 {3 /∗∗∗ r e t u r n a r r a y ∗∗∗ /4 $ret = array();56 /∗∗∗ a new dom o b j e c t ∗∗∗ /7 $dom = new domDocument;89 /∗∗∗ g e t t h e HTML ( s u p p r e s s e r r o r s ) ∗∗∗ /

10 @$dom->loadHTML(file_get_contents($link));1112 /∗∗∗ remove s i l l y w h i t e space ∗∗∗ /13 $dom->preserveWhiteSpace = false;1415 /∗∗∗ g e t t h e l i n k s from t h e HTML ∗∗∗ /16 $links = $dom->getElementsByTagName(’a’);1718 /∗∗∗ l oop over t h e l i n k s ∗∗∗ /19 foreach ($links as $tag)20 {21 $ret[$tag->getAttribute(’href’)] = $tag->childNodes->item(0)->

nodeValue;22 }23 return $ret;24 }

Przykładowa funkcja zwraca tablice linków z podanej strony. Jest to podejscie znaczniewygodniejsze niz uzywanie wyrazen regularnych np w Perlu.

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie

Listing 19: Java Example

1 import org.w3c.dom.*;2 import org.apache.xerces.parsers.DOMParser;3 import java.io.*;45 public class SearchElement{6 public static void main(String[] args) {7 try{8 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));9 System.out.print("Enter file name: ");

10 String str = bf.readLine();11 File file = new File(str);12 if (file.exists()){13 DOMParser parser = new DOMParser();14 parser.parse(str);15 Document doc = parser.getDocument();16 System.out.print("Enter element that have to count: ");17 String ele = bf.readLine();18 NodeList list = doc.getElementsByTagName(ele);19 if(list.getLength() == 0)20 System.out.println("Element doesn’t exist in the " + str + " Document.

");21 else22 System.out.println("Element occurrs " + list.getLength() + " times in

the " + str);23 }24 else { System.out.println("File not found!"); }25 }26 catch (Exception e) { e.getMessage(); }27 }

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie

Plan

1 DOM

2 DOM w innych jezykach

3 Podsumowanie

T. Romanczukiewicz XML 05

DOM DOM w innych jezykach Podsumowanie

DOM jest modelem pozwalajacym na dostep (czytanie i modyfikowanie)dokumentów XML poprzez strukture drzewa

Jest niezalezny od platformy i jezyka programowania

Całe drzewo XML jest wczytywane od razu w przeciwienstwie do SAX, co mozebyc problemem przy duzych plikach XML

Kazdy element, atrybut, komentarz itp jest reprezentowany przez wezeł. Dane -wezeł tekstowy

DOM udostepnie szereg metod pozwalajacych na porusznie sie w strukturzedrzewa (nawigacja, trawersowanie) oraz tworzenie usuwanie czytanie wezłów

Poniewaz DOM jest niezalezny od jezyka programowania, moze bycwykorzystywany w wielu jezykach poprzez odpowiednie API

Standard W3C definiuje interfejsy DOM tylko dla jezyków JavaScript i Java.

T. Romanczukiewicz XML 05