Wykorzystanie XML-a we własnych aplikacjach. 2005-12-01Wykorzystanie XML-a we własnych aplikacjach2 Modele dostępu do dokumentu XML Pozwalają programistom.

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
Generics w .NET 2.0 Łukasz Rzeszot.
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego (ang. push): –przechodzimy.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
XML w integracji aplikacji
Definiowanie typów dokumentów Część 2: XML Schema 16 października 2003.
11 XML w integracji aplikacji. 22 Cel: umożliwienie wymiany danych pomiędzy aplikacjami: aplikacje/komponenty/moduły posługują się różnymi formatami wewnętrznymi,
2 grudnia 2004 Wykorzystanie XML-a we własnych aplikacjach Patryk Czarnik (na podstawie wykładu Szymona Zioło)
XSL – część 2.
XML – standardy pokrewne XML – standardy pokrewne2 Standardy wykorzystywane w przetwarzaniu dokumentów XML XPath – XML Path Language. XSLT.
Zaawansowana składnia XML XML Schema
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego: –przechodzimy po strukturze.
Modele dostępu do dokumentu XML
Wykorzystanie XML-a we własnych aplikacjach 23 października 2003.
SAX i DOM wykorzystanie XML-a we własnych aplikacjach
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.
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
Tworzenie ASP.NET Web Form
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Dokumentowanie wymagań w języku XML
XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss.
Systemy operacyjne.
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
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
XML eXtensible Markup Language. 2 Prowadzący Michał Kozielski p. 413 mail:
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Rozwój aplikacji przy wykorzystaniu ASP.NET
Instytut Tele- i Radiotechniczny WARSZAWA
HTML DOM, XHTML – cel, charakterystyka
Autor: Kamil Szafranek
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Wykonał: Michał Nikołajuk
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.
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Podstawy języka skryptów
Waldemar Bartyna Pytania egzaminacyjne 1.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Iga Lewandowska I EMII MU
XML w bazach danych.
Obiektowe metody projektowania systemów XML eXtensible Markup Language.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Wzorce Projektowe w JAVA
Platforma .Net.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
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
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
PGO Interfejsy Michail Mokkas.
Założenia projektowe Javy
JavaBeans by Paweł Wąsala
PGO Dziedziczenie Michail Mokkas.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

Wykorzystanie XML-a we własnych aplikacjach

Wykorzystanie XML-a we własnych aplikacjach2 Modele dostępu do dokumentu XML 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.

Wykorzystanie XML-a we własnych aplikacjach3 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.

Wykorzystanie XML-a we własnych aplikacjach4 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.

Wykorzystanie XML-a we własnych aplikacjach5 Działanie modelu SAX – przykład Parser Aplikacja setDocumentHandler startDocument() startElement("wiersz", [bialy="nie" ]) ignorableWhitespace(spacje) startElement("autor",[]) characters("William...") endElement("autor") ignorableWhitespace(spacje) William Shakespeare throw SAXException

Wykorzystanie XML-a we własnych aplikacjach6 SAX2 – pakiet org.xml.sax 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.

Wykorzystanie XML-a we własnych aplikacjach7 SAX2 – pakiet org.xml.sax 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.

Wykorzystanie XML-a we własnych aplikacjach8 SAX – kroki implementacji 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.

Wykorzystanie XML-a we własnych aplikacjach9 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(...);

Wykorzystanie XML-a we własnych aplikacjach10 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).

Wykorzystanie XML-a we własnych aplikacjach11 DOM Core 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ść.

Wykorzystanie XML-a we własnych aplikacjach12 Drzewo DOM - przykład William Shakespeare Sonet William ShakespeareSonet 102

Wykorzystanie XML-a we własnych aplikacjach13 DOM – najważniejsze interfejsy Node DocumentElementComment AttrText CDATA Section Processing Instruction

Wykorzystanie XML-a we własnych aplikacjach14 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)

Wykorzystanie XML-a we własnych aplikacjach15 Klasy pomocnicze 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.

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

Wykorzystanie XML-a we własnych aplikacjach17 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.

Wykorzystanie XML-a we własnych aplikacjach18 Przykład (biblioteka DXML) 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(); }

Wykorzystanie XML-a we własnych aplikacjach19 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();

Wykorzystanie XML-a we własnych aplikacjach20 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.

Wykorzystanie XML-a we własnych aplikacjach21 SAX a Pull parsing aplikacjaparsermyContentHandler parse() SAX: aplikacjaparser next() Pull parsing:

Wykorzystanie XML-a we własnych aplikacjach22 Pull parsing – korzyści 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

Wykorzystanie XML-a we własnych aplikacjach23 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).

Wykorzystanie XML-a we własnych aplikacjach24 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.

Wykorzystanie XML-a we własnych aplikacjach25 XML i Java 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).

Wykorzystanie XML-a we własnych aplikacjach26 JAXP 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 (?).

Wykorzystanie XML-a we własnych aplikacjach27 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.

Wykorzystanie XML-a we własnych aplikacjach28 Parsery XML – przegląd 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).

Wykorzystanie XML-a we własnych aplikacjach29 Parsery XML – przegląd 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.

Wykorzystanie XML-a we własnych aplikacjach30 Gdzie szukać dalej SAX Home Page: Document Object Model (DOM): xml.coverpages.org/dom.html Common API for XML Pull Parsing IBM alphaWorks: Free XML tools and software – Lars Marius Garshol: XML w Javie: java.sun.com/xml

Wykorzystanie XML-a we własnych aplikacjach31 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