[ Pobierz całość w formacie PDF ]
.Czy¿wiêc programista nie powinien nigdy nie korzystaæ z DOM-a? Oczywiœcie, powinienkorzystaæ! Trzeba jednak zachowaæ du¿¹ ostro¿noœæ i uwa¿aæ na to, coprzekazujemy do modelu.Jeœli operujemy na niewielkich, mniejszych ni¿ megabajtdokumentach, prawdopodobnie ¿adne k³opoty nigdy nam siê nie przydarz¹.Wiêksze dokumenty — podrêczniki techniczne czy ca³e ksi¹¿ki — mog¹ poch³on¹æzasoby systemowe i wp³yn¹æ na wydajnoœæ aplikacji.Analizatory DOM zg³aszaj¹ce wyj¹tki SAXW naszych przyk³adach zwi¹zanych z modelem DOM nie wspomnieliœmy o wyj¹tkachzg³aszanych w wyniku przetwarzania dokumentu.Wynika to st¹d, ¿e — jakmówiliœmy — proces generowania drzewa DOM pozostawiono implementacji parsera,a te ró¿ni¹ siê przecie¿ miedzy sob¹.Jednak¿e zawsze dobrze jestprzechwytywaæ specyficzne wyj¹tki i odpowiednio na nie reagowaæ.Odpowiedniazmiana g³Ã³wnej pêtli parsera mo¿e byæ nieco zaskakuj¹ca.Oto wersja dla ApacheXerces:/**** Tutaj przetwarzamy plik i wyœwietlamy dokument* za pomoc¹ modelu DOM.*** @param uri String URI pliku do przetworzenia.*/public void performDemo(String uri) {System.out.println("Przetwarzanie pliku XML: " + uri + "\n\n");// Tworzymy egzemplarz implementacji parsera DOM danego producentaDOMParser parser = new DOMParser();try {parser.parse(uri);Document doc = parser.getDocument();// Wyœwietlamy dokument z drzewa DOM// z wciêciem w postaci ³añcucha pustegoprintNode(doc, "");} catch (IOException e) {System.out.println("B³¹d wczytywania URI: " + e.getMessage());} catch (SAXException e) {System.out.println("B³¹d przetwarzania: " + e.getMessage());}}Niespodziank¹ nie jest IOException (wskazuje b³¹d w lokalizacji podanego URI,podobnie jak w przyk³adzie SAX).Zastanawia coœ innego — mo¿liwoœæ zg³oszeniawyj¹tku SAXException.Nasz parser DOM zg³asza wyj¹tek SAX? Chybazaimportowaliœmy nie te klasy! Nie, klasy s¹ w³aœciwe.Pamiêtajmy o tym, comówiliœmy wczeœniej — mo¿liwe jest w³asnorêczne zbudowanie strukturydrzewiastej danych w dokumencie XML za pomoc¹ SAX-a, ale DOM stanowi ciekaw¹alternatywê.To prawda, ale nie wyklucza to jeszcze u¿ycia interfejsu SAX.Rzeczywiœcie SAX udostêpnia wydajny i szybki sposób przetworzenia dokumentu;akurat w naszym przypadku dokument jest przetwarzany przez SAX i wstawiany dostruktury DOM.Poniewa¿ nie istnieje standard rz¹dz¹cy sposobem tworzeniastruktury DOM, takie rozwi¹zanie jest dopuszczalne, a nawet popularne.Nienale¿y wiêc dziwiæ siê, ¿e importujemy i przechwytujemyorg.xml.sax.SAXException w aplikacjach DOM.Co dalej?Rozdzia³y 1.– 7.stanowi¹ pokaŸny zbiór informacji o XML-u.Czytelnik powinienju¿ potrafiæ pos³ugiwaæ siê XML-em, definicjami DTD i schematami oraz XSLT.Tonajwa¿niejsze technologie w programowaniu z wykorzystaniem jêzyka XML.Wkolejnych rozdzia³ach pojawi¹ siê oczywiœcie jeszcze inne skróty ispecyfikacje, ale omówione zagadnienia to klucz do korzystania z XML-a zpoziomu Javy.Oprócz specyfikacji zosta³y omówione tak¿e SAX i DOM, zatemCzytelnik potrafi reprezentowaæ wiêkszoœæ danych XML w Javie.Mo¿na powiedzieæ,¿e Czytelnik jest ju¿ oficjalnie programist¹ znaj¹cym Javê i XML!W nastêpnym rozdziale powrócimy do omawiania interfejsów SAX i DOM; wyka¿emyich zalety i wady.Przed zag³êbieniem siê w kodach aplikacji (czemu poœwiêconajest reszta ksi¹¿ki) zostanie omówiony interfejs JDOM.Twórcy JDOM staralisiê naprawiæ problemy i dokuczliwoœci zwi¹zane z interfejsami SAX i DOM.Powsta³y w ten sposób interfejs API otwiera przed programist¹ XML-a nowemo¿liwoœci
[ Pobierz całość w formacie PDF ]