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

Podobne dokumenty
SAX2 pakiet org.xml.sax

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

Wykorzystanie XML a we własnych aplikacjach

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Procesowanie dokumentów XML

XML in own applications

XML we własnych aplikacjach

XML we własnych aplikacjach

XML we własnych aplikacjach

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 we własnych aplikacjach

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

Podstawy XML-a. Zaawansowane techniki programowania

Drzewa DOM. Maciej Zakrzewicz.

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

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

Kotwasiński Obsługa XMLa z poziomu Javy

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

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda

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

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

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

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.

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

Zaawansowane aplikacje WWW - laboratorium

Kurs rozszerzony języka Python

Programowanie obiektowe

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

Zaawansowane aplikacje internetowe. Wykład 2. Komunikacja XML. wykład prowadzi: Maciej Zakrzewicz. Komunikacja XML

Wielowarstwowe aplikacje internetowe. Przetwarzanie XML. Autor wykładu: Maciej Zakrzewicz. Przetwarzanie XML

DOM SAX AJAX. SAX,DOMiAJAX. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 11 kwietnia 2010

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


Język Java część 2 (przykładowa aplikacja)

Model semistrukturalny

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

Programowanie obiektowe

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

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Języki i techniki programowania Ćwiczenia 2

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

XML extensible Markup Language. część 5

Biblioteki dzielone, XML i readline

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

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

Programowanie obiektowe

Struktury systemów operacyjnych

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

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

TIN Techniki Internetowe zima

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

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

Specyfikacja API Runtime BAS 3.0

Programowanie obiektowe

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

Wprowadzenie do projektu QualitySpy

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

Wzorce projektowe. dr inż. Marcin Pietroo

Język Java część 2 (przykładowa aplikacja)

Wprowadzenie do XML. Tomasz Traczyk.

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Diagramy klas. dr Jarosław Skaruz

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Szablony funkcji i szablony klas

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

java.util.* :Kolekcje Tomasz Borzyszkowski

Programowanie Obiektowe GUI

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Metody dostępu do danych

Programowanie obiektowe

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Paweł Kurzawa, Delfina Kongo

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Programowanie obiektowe

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Przykładowy dokument XML

Wzorce projektowe. dr inż. Marcin Pietroo

XML standardy pokrewne

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Pakiety podprogramów Dynamiczny SQL

Analiza i projektowanie aplikacji Java

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

Struktury Danych i Złożoność Obliczeniowa

1 XML w bazach danych

Aplikacje Internetowe, Servlety, JSP i JDBC

0.1. Diagram klas i pakietów

XML i nowoczesne technologie zarządzania treścią

Transkrypt:

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

SAX - wstęp Definicja: standardowy interfejs do parsowania plików XML oparty na modelu zdarzeniowym stworzony w celu ujednolicenia dostępu do różnych parserów XML Cechy: model zdarzeniowy obiektowość prostota sekwencyjność szybkość status - darmowy prototypowany w Javie 2

SAX - historia 1998r. - SAX 2000r. - SAX2 3

Ilustracja działania SAX Przykład wywołania: parse Parser - XMLReader setcontenthandler <tekst> <tytul styl="ital"> Spojrzenia na dokument XML </tytul> </autor> </tekst> Aplikacja startdocument startelement ignorablewhitespace startelement characters endelement ignorablewhitespace throw SAXException 4

SAX - możliwości SAX umożliwia: łatwą zmianę samego parsera porównywanie parserów stosowanie różnych parserów 5

Różnice między SAX i SAX2 Obsługa przestrzeni nazw Cechy (features) - wartości boolowskie Właściwości (properties) - dowolne obiekty Zmiany nazw wielu obiektów 6

SAX2 - pakiet org.xml.sax Interfejsy implementowane przez parser: XMLReader parse (2 metody) setdocumenthandler... Attributes getlength getname (2 metody) getvalue (2 metody) Opcjonalny: Locator Interfejsy implementowane przez użytkownika parsera: ContentHandler characters, ignorablewhitespace startdocument, enddocument startelement, endelement processinginstruction setdocumentlocator ErrorHandler, DTDHandler, EntityResolver 7

SAX2 - pakiet org.xml.sax Standardowa klasa: org.xml.sax.inputsource - może pobierać dane z InputStream, Reader, String Wyjątek: SAXException - ten wyjątek jest podnoszony w przypadku wystąpienia błędu Klasy pomocnicze (pakiet org.xml.sax.helpers): DefaultHandler - aplikację tworzymy tworząc podklasę tej klasy XMLReaderFactory AttributesImpl LocatorImpl 8

SAX kroki implementacji 1. Tworzymy podklasę klasy org.xml.sax.helpers.defaulthandler 2. Pobieramy obiekt org.xml.sax.xmlreader z fabryki 3. Rejestrujemy stworzoną podklasę w parserze (XMLReader) metodami set<...>handler 4. Wywołujemy metodę parse 9

Filtry SAX Co to są 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(...); 10

Przykładowe parsery SAX Java: Xerces-J (SAX2), SUN XML Parser, Oracle XML Parser, C/C++: Microsoft XML Parser, Xerces-C (SAX2), expat, Python: Pakiet 4XML Perl: XML::Parser (obudowa expat a w Perlu) 11

DOM Definicja: obiektowy model dostępu, stukturalizacji i nadawania stylu dokumentom DOM - oficjalna rekomendacja W3C DOM2 - kandydat na oficjalną rekomendację dla XML-a najistotniejsza jest część DOM Core, czyli właściwa definicja interfejsu obiektowego 12

DOM Core Bazowa cześć specyfikacji DOM Umożliwia: budowanie dokumentów nawigację po strukturze dokumentów dodawanie elementów modyfikacje elementów usuwanie elementów i ich zawartości Wady: pamięciożerność niska efektywność 13

DOM Core DOM Core ma swoje ustalone tłumaczenie na Javę, tłumaczeń na C++ jest wiele, obiekty DOM są dostępne jako obiekty COM np. parser MSXML3 14

DOM - prezentacja graficzna Prezentacja graficzna obiektu (drzewa) DOM i odpowiadającego mu dokumentu XML <TABLE BORDER="1"> <TR> <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> <TR> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TR> </TABLE> BORDER:Attribute Document TABLE: Element TR TR TD TD TD TD Shady Grove : Text Aeolian Over the River, Charlie Dorian 15

DOM diagram najważniejszych interfejsów Node Document Element Comment Attr Text Processing Instruction CDATA Section 16

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) typy obiektów ATTRIBUTE_NODE,... 17

Klasy pomocnicze DOM NamedNodeMap tablica haszująca obiektów Node (atrybuty!) NodeList wektor obietków Node (dzieci danego węzła!) DOMException wyjątek podnoszony, w przypadku błędnej modyfikacji węzła 18

DOM a DOM2 - różnice Najważniejsze różnice między DOM, a DOM2 możliwość łączenia zawartości dwóch dokumentów obsługa przestrzeni nazw 19

SAX DOM Przetwarzanie wsadowe. Oszczędny czasowo i pamięciowo. Dobry do wyławiania z dokumentu wybranych elementów. Dokument tylko do odczytu Całe drzewo dokumentu ładowane do pamięci. Kosztowny czasowo i pamięciowo. Pozwala wędrować po drzewie dokumentu. Pozwala tworzyć i modyfikować dokumenty. 20