SAX i DOM wykorzystanie XML-a we własnych aplikacjach

Slides:



Advertisements
Podobne prezentacje
Przekształcanie dokumentów XML - XSL
Advertisements

Standardowa biblioteka języka C++
Rafał Hryniów Tomasz Pieciukiewicz
Łódź, 29 października 2012 roku
Implementacja procesora XSLT w języku Ocaml
Interfejs użytkownika do zarządzania konfiguracją oprogramowania
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
11 Poprawne modele zawartości. Zarządzanie zmianami struktury.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
11 XML a SGML. Standardy pokrewne.. 22 SGML a XML – różnice Deklaracja SGML: konfiguracja wyglądu znaczników, ich maksymalnej długości, itp., definicja.
Definiowanie typów dokumentów Część 2: XML Schema 16 października 2003.
Wykorzystanie XML-a we własnych aplikacjach Wykorzystanie XML-a we własnych aplikacjach2 Modele dostępu do dokumentu XML Pozwalają programistom.
2 grudnia 2004 Wykorzystanie XML-a we własnych aplikacjach Patryk Czarnik (na podstawie wykładu Szymona Zioło)
XSL – część 2.
XML w zarządzaniu formularzami ubezpieczeniowymi ZUS
XML – standardy pokrewne XML – standardy pokrewne2 Standardy wykorzystywane w przetwarzaniu dokumentów XML XPath – XML Path Language. XSLT.
XSL Extensible Stylesheet Language 6 listopada 2003.
Zaawansowana składnia XML XML Schema
Modele dostępu do dokumentu XML
11 Dowiązania w XML-u. Formy architektoniczne.. 22 XLink – dowiązania w XML-u Linki jakie znamy (HTML): łączą dwa dokumenty: źródło i cel linku, źródłem.
XPath. XSL – część 1..
Wykorzystanie XML-a we własnych aplikacjach 23 października 2003.
11 Przypomnienie: zaliczenie ćwiczeń Kolokwium zaliczeniowe na ćwiczeniach 16 maja: zadania z technik omawianych na ćwiczeniach, można korzystać z notatek.
XML Schema XML Schema2 Definiowanie języków XML, SGML – metajęzyki. Definiowanie języków (zastosowań, typów dokumentów, schematów): –określanie.
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
Generyczne Repozytorium Dokumentów w XML
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss.
Obiektowe metody projektowania systemów
Marcin Kujawa Michał Łobarzewski
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Projektowanie warstwy serwera Współpraca z XML. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Polsko-Japońska Wyższa Szkoła Technik Komputerowych
Test Doubles Adam Gabryś , v1.1,
XML eXtensible Markup Language. 2 Prowadzący Michał Kozielski p. 413 mail:
System webowy do tworzenia kolektywnych prototypów aplikacji sieciowych i mobilnych Łukasz Przywarty
Instytut Tele- i Radiotechniczny WARSZAWA
HTML DOM, XHTML – cel, charakterystyka
W większości języków programowania biblioteki wejścia/wyjścia ukrywają szczegóły obsługi poszczególnych mediów pod abstrakcją strumienia (ang. stream).
Autor: Kamil Szafranek
Programowanie obiektowe – zastosowanie języka Java SE
Systemy zarządzania treścią Wykład 5
Projektowanie stron WWW
DOM Ewa Dukała Piotr Muszyński. DOM DocumentBuilder Factory Document Builder XML Data object obiectobject DocumentDOM.
Obiekty DOM.
Waldemar Bartyna Pytania egzaminacyjne 1.
Iga Lewandowska I EMII MU
Adresowanie elementów struktury dokumentów - XPath.
Obiektowe metody projektowania systemów XML eXtensible Markup Language.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Platforma .Net.
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Waldemar Bartyna Pytania egzaminacyjne 1.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
XML we własnych aplikacjach Patryk Czarnik. Wykorzystanie XML we własnych aplikacjach Jak korzystać z XML we własnych aplikacjach? Odczyt zawartości dokumentów.
XML we własnych aplikacjach
Programowanie Obiektowe – Wykład 6
T. 18. E Proces DGA - Działania (operatorka).
Programowanie Obiektowe – Wykład 2
Aplikacje i usługi internetowe
PGO Interfejsy Michail Mokkas.
Założenia projektowe Javy
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

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

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

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

Ilustracja działania SAX setContentHandler Parser - XMLReader parse Przykład wywołania: <tekst> Aplikacja <tytul styl="ital"> Spojrzenia na dokument XML startDocument startElement </tytul> ignorableWhitespace </autor> startElement </tekst> characters endElement ignorableWhitespace throw SAXException

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

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 Changes from SAX 1.0 to SAX 2.0beta The following interfaces and classes have been deprecated, and will be removed from a future version of SAX; they should be used only for interaction with SAX1 drivers or applications: org.xml.sax.Parser org.xml.sax.DocumentHandler org.xml.sax.AttributeList org.xml.sax.HandlerBase org.xml.sax.helpers.ParserFactory org.xml.sax.helpers.AttributeListImpl The following interfaces and classes have been added to SAX2: org.xml.sax.XMLReader (replaces Parser) org.xml.sax.XMLFilter org.xml.sax.ContentHandler (replaces DocumentHandler) org.xml.sax.Attributes (replaces AttributeList) org.xml.sax.SAXNotSupportedException org.xml.sax.SAXNotRecognizedException org.xml.sax.helpers.AttributesImpl (replaces AttributeListImpl) org.xml.sax.helpers.NamespaceSupport org.xml.sax.helpers.XMLFilterImpl org.xml.sax.helpers.ParserAdapter org.xml.sax.helpers.XMLReaderAdapter org.xml.sax.helpers.DefaultHandler (replaces HandlerBase) org.xml.sax.ext.LexicalHandler (since removed) org.xml.sax.ext.DeclHandler (since removed) SAX2 contains complete Namespace support, which is available by default from any XMLReader. An XML reader can also optionally supply raw XML 1.0 names. See the Namespaces page for more details. An XML reader is fully configurable: it is possible to attempt to query or change the current value of any feature or property. Features and properties are identified by fully-qualified URIs, and parties are free to invent their own names for new extensions. See the Features and Properties page for more details. The ContentHandler and Attributes interfaces are similar to the deprecated DocumentHandler and AttributeList interfaces, but they add support for Namespace-related information. ContentHandler also adds a callback for skipped entities, and Attributes adds the ability to look up an attribute's index by name. The ParserAdapter class makes a SAX1 Parser behave as a SAX2 XMLReader. The XMLReaderAdapter class makes a SAX2 XML reader behave as a SAX1 parser. These two classes should ease the transition from SAX1 to SAX2 by allowing SAX1 drivers and clients to co-exist with SAX2 drivers and clients in the same application.

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

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

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

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(...);

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)

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 IDL - Interface Definition Language - język służący do zapisu interfejsów obiektowych niezależny od języka programowania

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ść

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

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> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TABLE> Document TABLE: Element TR TR BORDER:Attribute TD TD TD TD Shady Grove : Text Aeolian Over the River, Charlie Dorian

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

Interfejs Node dostęp do zawartości manipulacja 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, ...

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

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

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