Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...
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
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