Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład



Podobne dokumenty
SAX2 pakiet org.xml.sax

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

XML we własnych aplikacjach

XML we własnych aplikacjach

Procesowanie dokumentów XML

XML in own applications

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykorzystanie XML a we własnych aplikacjach

XML standardy pokrewne

XML we własnych aplikacjach

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

XML we własnych aplikacjach

XML in own applications

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

XML w.net. Dominik Baś nr alb Wrocław, 29 maja 2007

Drzewa DOM. Maciej Zakrzewicz.

Podstawy XML-a. Zaawansowane techniki programowania

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06

Kotwasiński Obsługa XMLa z poziomu Javy

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

XML we własnych aplikacjach

Plan prezentacji. Przetwarzanie dokumentów XML JAXP SAX JAXP SAX DOM STAX XSLT. Przedmiot: XML i jego zastosowania. Dr inż. Stanisław Polak JAXB

XML i Java 1. XML Budowa dokumentu XML. Projektowanie systemów informatycznych

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Zaawansowany kurs języka Python

XML we własnych aplikacjach

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Zaawansowane aplikacje WWW - laboratorium

XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT.

METODY REPREZENTACJI INFORMACJI

Metody dostępu do danych

Programowanie obiektowe

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Języki formatowania dokumentów strukturalnych. XSL przekształcenia XML-a. XSL a XSLT. XSL części składowe. Zasada działania przekształcenia XSLT

XML i nowoczesne technologie zarządzania treścią

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie obiektowe

Programowanie obiektowe

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

29. Poprawność składniowa i strukturalna dokumentu XML

Programowanie obiektowe

Przykładowy dokument XML

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Rodzaje przetwarzania XSLT (1)

Programowanie współbieżne i rozproszone

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Programowanie obiektowe zastosowanie języka Java SE

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Web Tools Platform. Adam Kruszewski

Java jako język programowania

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

XML w bazach danych i bezpieczeństwie

Model semistrukturalny

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Analiza i projektowanie aplikacji Java

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Kurs rozszerzony języka Python

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Dokumentacja do API Javy.

Programowanie obiektowe

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

1 XML w bazach danych

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

1 Wprowadzenie do J2EE

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Programowanie obiektowe

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Wybrane działy Informatyki Stosowanej

Spis treści. Przedmowa

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 05

Programowanie obiektowe - 1.

Klasy abstrakcyjne, interfejsy i polimorfizm

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Implementacja schematów i statycznej kontroli typów w systemie JLoXiM

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie obiektowe

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Układy VLSI Bramki 1.0

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Programowanie obiektowe

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

XML i nowoczesne technologie zarządzania treścią 2007/08

Transkrypt:

Modele dostępu do dokumentu XML Wykorzystanie XML-a we własnych aplikacjach Pozwalają programistom na wysokopoziomowy dostęp do zawartości dokumentów XML : korzystamy z abstrakcyjnych obiektów, nie troszczymy się o analizę leksykalną i składniową. SAX Simple API for XML: model zdarzeniowy. DOM Document Object Model: obiektowy model drzewa struktury, zwykle implementowany przy użyciu SAX. XML data binding wiązanie XML-a. Pull parsing przetwarzanie strumieniowe. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 2 Implementacja modelu parser Parser (procesor) XML-a moduł programistyczny analizujący dokument XML i udostępniający jego zawartość w postaci abstrakcyjnego modelu. Funkcjonalność parsera: analiza leksykalna i składniowa, sprawdzenie poprawności strukturalnej (opcjonalnie). Generyczność niezależność od konkretnego języka! Po co abstrakcyjne modele: jednolity sposób programowania, niezależnie od użytego parsera, możliwość wymiany parsera, możliwość porównywania parserów. SAX Simple API for XML Idea: dokument XML jako ciąg zdarzeń, program reaguje na wybrane zdarzenia. Status: 1998: SAX 1.0, 2000: SAX 2.0 najważniejsze rozszerzenia: obsługa przestrzeni nazw, cechy (features) wartości logiczne, właściwości (properties) - dowolne biekty, zmiany nazw wielu obiektów. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 3 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 4 Działanie modelu SAX przykład SAX2 pakiet org.xml.sax <?xml version="1.0"?> <wiersz bialy="nie"> <autor> William Shakespeare </autor> </tytul> </wiersz> Parser setdocumenthandler Aplikacja startdocument() startelement("wiersz", [bialy="nie" ]) ignorablewhitespace(spacje) startelement("autor",[]) characters("william...") endelement("autor") ignorablewhitespace(spacje) throw SAXException Interfejsy implementowane przez parser: XMLReader parse (2 metody), setcontenthandler,... Attributes getlength, getlocalname, getqname, getvalue (2 metody). Opcjonalny: Locator Interfejsy implementowane przez użytkownika parsera: ContentHandler zdarzenia: characters, ignorablewhitespace, startdocument, enddocument, startelement, endelement, processinginstruction, setdocumentlocator. ErrorHandler, DTDHandler, EntityResolver. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 5 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 6 1

SAX2 pakiet org.xml.sax SAX kroki implementacji Standardowa klasa: org.xml.sax.inputsource może pobierać dane z InputStream, Reader, String. Wyjątek: SAXException podnoszony w przypadku wystąpienia błędu. Klasy pomocnicze (pakiet org.xml.sax.helpers): DefaultHandler implementujemy podklasy tej klasy, XMLReaderFactory, AttributesImpl, LocatorImpl. Tworzymy podklasę klasy org.xml.sax.helpers.defaulthandler. Pobieramy obiekt org.xml.sax.xmlreader z fabryki. Rejestrujemy stworzoną podklasę w parserze (XMLReader) metodami set...handler. Wywołujemy metodęparse. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 7 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 8 Filtry SAX Implementują interfejs org.xml.sax.xmlfilter. Rozszerzają klasęorg.xml.sax.helpers.xmlfilterimpl. Specyficzne implementacje interfejsów: ContentHandler, DTDHandler, EntityResolver, ErrorHandler. Można je łączyć w łańcuchy: XMLReader reader;... XMLFilterImpl f1 = new XMLFilterImpl(reader); XMLFilterImpl f2 = new XMLFilterImpl(f1); f2.parse(...); Model DOM Dostęp do całego dokumentu (HTML lub XML), z wyjątkiem DTD. Części składowe: DOM Level 1 (październik 1998): podstawowe metody dostępu do struktury dokumentu, DOM Level 2 (listopad 2000): nowe cechy XML-a, np. przestrzenie nazw, Views widoki dokumentu po zastosowaniu stylów CSS, Events obsługa zdarzeń, Style manipulowanie arkuszami stylów, Traversal and Range podróżowanie po dokumencie XML. DOM Level 3 (2004): Load and Save ładowanie i zapisywanie dokumentu, Validation dostęp do definicji struktury dokumentu (DTD). 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 9 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 10 DOM Core Drzewo DOM - przykład Bazowa cześć specyfikacji DOM. Umożliwia: budowanie dokumentów, nawigację po strukturze dokumentów, dodawanie elementów i atrybutów, modyfikacje elementów i atrybutów, usuwanie elementów/atrybutów i ich zawartości. Wady: pamięciożerność, niska efektywność. <?xml version="1.0"?> <wiersz> <autor>william Shakespeare </autor> <tytul>sonet 102</tytul> <zwrotka> <wers>...</wers>... </zwrotka> </wiersz> <autor> <wiersz> <tytul> <zwrotka> William Shakespeare Sonet 102 <wers> 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 11 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 12 2

DOM najważniejsze interfejsy Node Document Element Comment Attr Text CDATA Section Processing Instruction Interfejs Node Dostęp do zawartości: getattributes() getchildnodes() getfirstchild() getlastchild() getnextsibling() getprevioussibling() getnodename() getnodevalue() getnodetype() getownerdocument() getparentnode() haschildnodes() Manipulacja zawartością: appendchild(node) insertbefore(node, Node) removechild(node) replacechild(node, Node) setnodevalue(string) setnodename(string) Klonowanie: clonenode(boolean) 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 13 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 14 Klasy pomocnicze DOM SAX DOM NamedNodeMap: tablica haszująca obiektów Node (np. atrybutów). NodeList: wektor obietków Node (np. dzieci danego węzła). DOMException: wyjątek podnoszony w przypadku błędnej modyfikacji węzła. Przetwarzanie wsadowe. Oszczędny czasowo i pamięciowo. Dobry do wyławiania z dokumentu wybranych elementów. Całe drzewo dokumentu ładowane do pamięci. Kosztowny czasowo i pamięciowo. Pozwala wędrować po drzewie dokumentu. Dokument tylko do odczytu Pozwala tworzyć i modyfikować dokumenty. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 15 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 16 XML Data Binding Dokumenty XML a obiekty Javy: DTD/schemat odpowiada definicji klasy, dokument XML (instancja schematu) odpowiada obiektowi (instancji klasy). Pomysł: automatyczne generowanie klas z DTD/schematów. Różnice w stosunku do modelu generycznego (np. DOM): zestaw typów/klas i funkcji/metod zależy od typu dokumentu, struktura mniej kosztowna pamięciowo, intuicyjny interfejs dostępu do zawartości, modyfikacja struktury i wartości tylko w ramach tego samego typu dokumentu. Przykład (biblioteka DXML) <!ELEMENT Phonebook (Person*)> <!ELEMENT Person (Name, Phone*)> <!ELEMENT Name (Firstname, Lastname)> <!ELEMENT Firstname (#PCDATA)> <!ELEMENT Lastname (#PCDATA)> <!ELEMENT Phone (#PCDATA)> public interface IPerson extends com.objectspace.xml.idxmlinterface { // element Name public IName getname(); public void setname(iname arg0); // element Phone public void addphone(string arg0); public int getphonecount(); public void setphones(vector arg0); public String[] getphones(); public void setphones(string[] arg0); public Enumeration getphoneelements(); public String getphoneat(int arg0); public void insertphoneat (String arg0, int arg1); public void setphoneat (String arg0, int arg1); public boolean removephone (String arg0); public void removephoneat(int arg0); public void removeallphones(); } 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 17 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 18 3

DXML: jak z tego korzystać Przygotowanie DTD. Wygenerowanie klas. Korzystanie w kodzie w Javie: import com.objectspace.xml.*;... xmldocument = Xml.openDocument(new File("phonebook.xml")); IPhonebook phonebook = (IPhonebook) xmldocument.getroot(); Przetwarzanie strumieniowe (pull parsing) Alternatywa dla modelu SAX: aplikacja wyciąga kolejne zdarzenia z parsera, przetwarzanie kontrolowane przez aplikację, a nie parser, parser działa podobnie jak iterator, kursor lub strumień danych, zachowane cechy modelu SAX: duża wydajność, możliwość przetwarzania dowolnie dużych dokumentów. Standaryzacja: Java Community Process, JSR 173: Streaming API for XML, Common API for XML Pull Parsing. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 19 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 20 SAX a Pull parsing Pull parsing korzyści SAX: aplikacja mycontenthandler parser parse() Pull parsing: aplikacja parser Jeszcze większa wydajność niż w (i tak już wydajnym) modelu SAX, dzięki: możliwości przerwania przetwarzania przed końcem pliku, gdy potrzebujemy z niego tylko część danych, możliwości zmniejszenia liczby kopiowań obiektów typu String, szybszemu filtrowaniu zdarzeń. Możliwość prostej obróbki wielu dokumentów jednocześnie. Bardziej proceduralny styl programowania, co daje: mniej stanów do pamiętania, możliwość użycia rekursji, zwiększone powtórne użycie kodu (reusability). Źródło: Plechawski, M., Nie pozwól się popychać, Software 2.0, 6/2003 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 21 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 22 DOM czy data binding co wybrać? Kiedy używać modelu pamięciowego: nieduże dokumenty (muszą mieścić się w pamięci), operacje wymagające jednoczesnego dostępu do wielu węzłów, tworzenie, edycja i zapisywanie dokumentów w kodzie. DOM sprawdza się, gdy: struktura dokumentów jest nieznana, niedoprecyzowana lub zmienna, dopuszczalna jest niższa efektywność. Data binding sprawdza się, gdy: struktura dokumentu jest ustalona i znana (XML Schema/DTD), obiekty w aplikacji są czytanie z dokumentów XMLi zapisywane do dokumentów XML (np. w zastosowaniach związanych z wymianą danych). SAX czy pull parsing co wybrać? Kiedy używać modelu wsadowego: potencjalnie duże dokumenty, stosunkowo proste, lokalne operacje, ważna jest efektywność. Pull parsing sprawdza się, gdy: kończymy przetwarzanie po wystąpieniu poszukiwanych danych, przetwarzanie zdarzenia zależy od kontekstu (np. od tego, czy jesteśmy wewnątrz pewnego elementu), przetwarzamy równolegle więcej niż jeden plik (np. porównujemy pliki). SAX sprawdza się, gdy: chcemy odfiltrować dokument interesują nas tylko wybrane elementy za jednym przebiegiem dokonujemy kilka niezależnych rodzajów przetwarzania. 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 23 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 24 4

XML i Java JAXP Ideologia: Java umożliwia uruchamianie raz napisanych programów na wielu platformach sprzętowych/systemowych, XML stanowi międzyplatformowy nośnik danych. Praktyka: wsparcie dla Unicode i różnych standardów kodowania, wsparcie dla XML już w bibliotece standardowej (JAXP), wiele narzędzi wspierających i używających XML w Javie: JAXB, SJSXP, JAXR (rejestry w XML), XML Signature (podpis elektroniczny), JAX-RPC, SOAP (programowanie rozproszone). Java API for XML Processing: definicja interfejsów, za pomocą których programiści mogą przetwarzać XML we własnych aplikacjach, wzorcowa implementacja, możliwość podmiany implementacji wybranego modułu (np. parsera). Wersja 1.3 (wrzesień 2004), zawarta w J2SE (1.)5.0: parsery (DOM Level 3 i SAX 2), procesor XSLT 1.0, ewaluator XPath 1.0, procesor XMLSchema i DTD. W kolejnych wersjach zapewne: XQuery, przetwarzanie strumieniowe (?). 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 25 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 26 Parsery XML przegląd Parsery XML przegląd Xerces: Java, C++, Perl, komponent COM XML Schema, SAX 2.0, DOM level 1, 2 i częściowo 3, XInclude. XP (Java) i Expat (C) Jamesa Clarka: model zdarzeniowy (w XP zgodny z SAX), nie sprawdzają poprawności strukturalnej. Oracle XML Parser: SAX, DOM, XPath, Java, C, C++, PL/SQL. Perl: XML::Parser pakiet wykorzystujący parser Expat J. Clarka napisany w C, XML::DOM. Python: PyXML. Microsoft XML Core Services (MSXML 4.0, komponent COM): SAX, DOM, Schema Object Model, możliwość dostępu z różnych języków programowania: JavaScript, Java, Perl, Python, SQL, Visual Basic. XML w.net: SAX, DOM, XPath, XMLReader (pull parsing). 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 27 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 28 Parsery XML przegląd Gdzie szukać dalej Implementacje XML data binding: Dynamic XML, ObjectSpace, JAXB Java Architecture for XML Binding, Sun Microsystems, Castor, Exolab,... Implementacje przetwarzania strumieniowego: Sun Java Streaming XML Parser,.Net XmlReader, Microsoft, XmlPull API i jego implementacje (XNI 2 XmlPull, XPP3/MXP1), BEA XML Stream API. SAX Home Page: www.saxproject.org Document Object Model (DOM): www.w3.org/dom xml.coverpages.org/dom.html Common API for XML Pull Parsing www.xmlpull.org IBM alphaworks: www.alphaworks.ibm.com Free XML tools and software Lars Marius Garshol: www.garshol.priv.no/download/xmltools/ XML w Javie: java.sun.com/xml 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 29 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 30 5

Gdzie szukać dalej Gajda, P., SAX i DOM, czyli XML w naszych aplikacjach Software 2.0, nr 6/2001, Wydawnictwo Software Brauncajs, T., JAXB i Castor wiązanie XML-a w Javie Software 2.0, nr 6/2002, Wydawnictwo Software Plechawski, M., Nie pozwól się popychać Software 2.0, nr 6/2003, Wydawnictwo Software Czarnik, P., Alternatywne źródła zdarzeń SAX Software 2.0, nr 6/2004, Wydawnictwo Software 2005-12-01 Wykorzystanie XML-a we własnych aplikacjach 31 6