Wykorzystanie XML-a we wlasnych aplikacjach - PowerPoint PPT Presentation

About This Presentation
Title:

Wykorzystanie XML-a we wlasnych aplikacjach

Description:

Title: XML i nowoczesne technologie zarz dzania tre ci Author: Szymon Ziolo Last modified by: Szymon Zio o Created Date: 9/27/2004 2:02:47 PM – PowerPoint PPT presentation

Number of Views:100
Avg rating:3.0/5.0
Slides: 32
Provided by: Szymon9
Category:

less

Transcript and Presenter's Notes

Title: Wykorzystanie XML-a we wlasnych aplikacjach


1
Wykorzystanie XML-awe wlasnych aplikacjach
2
Modele dostepu do dokumentu XML
  • Pozwalaja programistom na wysokopoziomowy dostep
    do zawartosci dokumentów XML
  • korzystamy z abstrakcyjnych obiektów,
  • nie troszczymy sie o analize leksykalna i
    skladniowa.
  • SAX Simple API for XML
  • model zdarzeniowy.
  • DOM Document Object Model
  • obiektowy model drzewa struktury,
  • zwykle implementowanyprzy uzyciu SAX.
  • XML data binding wiazanie XML-a.
  • Pull parsing przetwarzanie strumieniowe.

3
Implementacja modelu parser
  • Parser (procesor) XML-a modul programistyczny
    analizujacy dokument XML i udostepniajacy jego
    zawartosc w postaci abstrakcyjnego modelu.
  • Funkcjonalnosc parsera
  • analiza leksykalna i skladniowa,
  • sprawdzenie poprawnosci strukturalnej
    (opcjonalnie).
  • Generycznosc niezaleznosc od konkretnego
    jezyka!
  • Po co abstrakcyjne modele
  • jednolity sposób programowania, niezaleznie od
    uzytego parsera,
  • mozliwosc wymiany parsera,
  • mozliwosc porównywania parserów.

4
SAX Simple API for XML
  • Idea
  • dokument XML jako ciag zdarzen,
  • program reaguje na wybrane zdarzenia.
  • Status
  • 1998 SAX 1.0,
  • 2000 SAX 2.0 najwazniejsze rozszerzenia
  • obsluga przestrzeni nazw,
  • cechy (features) wartosci logiczne,
  • wlasciwosci (properties) - dowolne biekty,
  • zmiany nazw wielu obiektów.

5
Dzialanie modelu SAX przyklad
lt?xml version"1.0"?gt ltwiersz bialy"nie"gt
ltautorgt William Shakespeare lt/autorgt
lt/tytulgt lt/wierszgt
Aplikacja
startDocument()
startElement("wiersz", bialy"nie" )
ignorableWhitespace(spacje)
startElement("autor",)
characters("William...")
endElement("autor")
ignorableWhitespace(spacje)
Parser
6
SAX2 pakiet org.xml.sax
  • Interfejsy implementowaneprzez parser
  • XMLReader
  • parse (2 metody),
  • setContentHandler,
  • ...
  • Attributes
  • getLength,
  • getLocalName, getQName,
  • getValue (2 metody).
  • Opcjonalny Locator
  • Interfejsy implementowaneprzez uzytkownika
    parsera
  • ContentHandler zdarzenia
  • characters, ignorableWhitespace,
  • startDocument, endDocument,
  • startElement, endElement,
  • processingInstruction,
  • setDocumentLocator.
  • ErrorHandler, DTDHandler, EntityResolver.

7
SAX2 pakiet org.xml.sax
  • Klasy pomocnicze (pakiet org.xml.sax.helpers)
  • DefaultHandler implementujemy podklasy tej
    klasy,
  • XMLReaderFactory,
  • AttributesImpl,
  • LocatorImpl.
  • Standardowa klasa
  • org.xml.sax.InputSource moze pobierac dane z
    InputStream, Reader, String.
  • Wyjatek
  • SAXException podnoszony w przypadku wystapienia
    bledu.

8
SAX kroki implementacji
  • Tworzymy podklase klasy org.xml.sax.helpers.Defaul
    tHandler.
  • Pobieramy obiekt org.xml.sax.XMLReader z fabryki.
  • Rejestrujemy stworzona podklase w parserze
    (XMLReader) metodami set...Handler.
  • Wywolujemy metode parse.

9
Filtry SAX
  • Implementuja interfejs org.xml.sax.XMLFilter.
  • Rozszerzaja klase org.xml.sax.helpers.XMLFilterImp
    l.
  • Specyficzne implementacje interfejsów
    ContentHandler, DTDHandler, EntityResolver,
    ErrorHandler.
  • Mozna je laczyc w lancuchy
  • XMLReader reader...XMLFilterImpl f1 new
    XMLFilterImpl(reader)XMLFilterImpl f2 new
    XMLFilterImpl(f1)f2.parse(...)

10
Model DOM
  • Dostep do calego dokumentu (HTML lub XML), z
    wyjatkiem DTD.
  • Czesci skladowe
  • DOM Level 1 (pazdziernik 1998)
  • podstawowe metody dostepu do struktury dokumentu,
  • DOM Level 2 (listopad 2000)
  • nowe cechy XML-a, np. przestrzenie nazw,
  • Views widoki dokumentu po zastosowaniu stylów
    CSS,
  • Events obsluga zdarzen,
  • Style manipulowanie arkuszami stylów,
  • Traversal and Range podrózowanie po
    dokumencie XML.
  • DOM Level 3 (2004)
  • Load and Save ladowanie i zapisywanie
    dokumentu,
  • Validation dostep do definicji struktury
    dokumentu (DTD).

11
DOM Core
  • Bazowa czesc specyfikacji DOM.
  • Umozliwia
  • budowanie dokumentów,
  • nawigacje po strukturze dokumentów,
  • dodawanie elementów i atrybutów,
  • modyfikacje elementów i atrybutów,
  • usuwanie elementów/atrybutów i ich zawartosci.
  • Wady
  • pamieciozernosc,
  • niska efektywnosc.

12
Drzewo DOM - przyklad
lt?xml version"1.0"?gt ltwierszgt ltautorgtWilliam
Shakespeare lt/autorgt lttytulgtSonet
102lt/tytulgt ltzwrotkagt ltwersgt...lt/wersgt
... lt/zwrotkagt lt/wierszgt
13
DOM najwazniejsze interfejsy
Node
Document
Element
Comment
ProcessingInstruction
Attr
Text
CDATA Section
14
Interfejs Node
  • Dostep do zawartosci
  • getAttributes()
  • getChildNodes()
  • getFirstChild()
  • getLastChild()
  • getNextSibling()
  • getPreviousSibling()
  • getNodeName()
  • getNodeValue()
  • getNodeType()
  • getOwnerDocument()
  • getParentNode()
  • hasChildNodes()
  • Manipulacja zawartoscia
  • appendChild(Node)
  • insertBefore(Node, Node)
  • removeChild(Node)
  • replaceChild(Node, Node)
  • setNodeValue(String)
  • setNodeName(String)
  • Klonowanie
  • cloneNode(boolean)

15
Klasy pomocnicze DOM
  • NamedNodeMap
  • tablica haszujaca obiektów Node (np. atrybutów).
  • NodeList
  • wektor obietków Node (np. dzieci danego wezla).
  • DOMException
  • wyjatek podnoszony w przypadku blednej
    modyfikacji wezla.

16
SAX ? DOM
  • Cale drzewo dokumentu ladowane do pamieci.
  • Przetwarzanie wsadowe.
  • Oszczedny czasowo i pamieciowo.
  • Kosztowny czasowo i pamieciowo.
  • Dobry do wylawiania z dokumentu wybranych
    elementów.
  • Pozwala wedrowac po drzewie dokumentu.
  • Dokument tylko do odczytu
  • Pozwala tworzyc i modyfikowac dokumenty.

17
XML Data Binding
  • Dokumenty XML a obiekty Javy
  • DTD/schemat odpowiada definicji klasy,
  • dokument XML (instancja schematu) odpowiada
    obiektowi (instancji klasy).
  • Pomysl
  • automatyczne generowanie klas z DTD/schematów.
  • Róznice w stosunku do modelu generycznego (np.
    DOM)
  • zestaw typów/klas i funkcji/metod zalezy od typu
    dokumentu,
  • struktura mniej kosztowna pamieciowo,
  • intuicyjny interfejs dostepu do zawartosci,
  • modyfikacja struktury i wartosci tylko w ramach
    tego samego typu dokumentu.

18
Przyklad (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()
  • lt!ELEMENT Phonebook (Person)gtlt!ELEMENT Person
    (Name, Phone)gtlt!ELEMENT Name (Firstname,
    Lastname)gtlt!ELEMENT Firstname (PCDATA)gtlt!ELEMEN
    T Lastname (PCDATA)gtlt!ELEMENT Phone (PCDATA)gt

19
DXML jak z tego korzystac
  • Przygotowanie DTD.
  • Wygenerowanie klas.
  • Korzystanie w kodzie w Javie
  • import com.objectspace.xml....xmlDocument
    Xml.openDocument(new File("phonebook.xml"))IPhon
    ebook phonebook (IPhonebook) xmlDocument.getRoot
    ()

20
Przetwarzanie strumieniowe (pull parsing)
  • Alternatywa dla modelu SAX
  • aplikacja wyciaga kolejne zdarzenia z parsera,
  • przetwarzanie kontrolowane przez aplikacje, a nie
    parser,
  • parser dziala podobnie jak iterator, kursor lub
    strumien danych,
  • zachowane cechy modelu SAX
  • duza wydajnosc,
  • mozliwosc przetwarzania dowolnie duzych
    dokumentów.
  • Standaryzacja
  • Java Community Process, JSR 173 Streaming API
    for XML,
  • Common API for XML Pull Parsing.

21
SAX a Pull parsing
22
Pull parsing korzysci
  • Jeszcze wieksza wydajnosc niz w (i tak juz
    wydajnym) modelu SAX, dzieki
  • mozliwosci przerwania przetwarzania przed koncem
    pliku, gdy potrzebujemy z niego tylko czesc
    danych,
  • mozliwosci zmniejszenia liczby kopiowan obiektów
    typu String,
  • szybszemu filtrowaniu zdarzen.
  • Mozliwosc prostej obróbki wielu dokumentów
    jednoczesnie.
  • Bardziej proceduralny styl programowania, co
    daje
  • mniej stanów do pamietania,
  • mozliwosc uzycia rekursji,
  • zwiekszone powtórne uzycie kodu (reusability).
  • Zródlo Plechawski, M., Nie pozwól sie popychac,
    Software 2.0, 6/2003

23
DOM czy data binding co wybrac?
  • Kiedy uzywac modelu pamieciowego
  • nieduze dokumenty (musza miescic sie w pamieci),
  • operacje wymagajace jednoczesnego dostepu do
    wielu wezlów,
  • tworzenie, edycja i zapisywanie dokumentów w
    kodzie.
  • DOM sprawdza sie, gdy
  • struktura dokumentów jest nieznana,
    niedoprecyzowana lub zmienna,
  • dopuszczalna jest nizsza efektywnosc.
  • Data binding sprawdza sie, gdy
  • struktura dokumentu jest ustalona i znana (XML
    Schema/DTD),
  • obiekty w aplikacji sa czytanie z dokumentów XMLi
    zapisywane do dokumentów XML (np. w
    zastosowaniach zwiazanych z wymiana danych).

24
SAX czy pull parsing co wybrac?
  • Kiedy uzywac modelu wsadowego
  • potencjalnie duze dokumenty,
  • stosunkowo proste, lokalne operacje,
  • wazna jest efektywnosc.
  • Pull parsing sprawdza sie, gdy
  • konczymy przetwarzanie po wystapieniu
    poszukiwanych danych,
  • przetwarzanie zdarzenia zalezy od kontekstu (np.
    od tego, czy jestesmy wewnatrz pewnego elementu),
  • przetwarzamy równolegle wiecej niz jeden plik
    (np. porównujemy pliki).
  • SAX sprawdza sie, gdy
  • chcemy odfiltrowac dokument interesuja nas
    tylko wybrane elementy
  • za jednym przebiegiem dokonujemy kilka
    niezaleznych rodzajów przetwarzania.

25
XML i Java
  • Ideologia
  • Java umozliwia uruchamianie raz napisanych
    programów na wielu platformach sprzetowych/systemo
    wych,
  • XML stanowi miedzyplatformowy nosnik danych.
  • Praktyka
  • wsparcie dla Unicode i róznych standardów
    kodowania,
  • wsparcie dla XML juz w bibliotece standardowej
    (JAXP),
  • wiele narzedzi wspierajacych i uzywajacych XML w
    Javie
  • JAXB, SJSXP,
  • JAXR (rejestry w XML),
  • XML Signature (podpis elektroniczny),
  • JAX-RPC, SOAP (programowanie rozproszone).

26
JAXP
  • Java API for XML Processing
  • definicja interfejsów, za pomoca których
    programisci moga przetwarzac XML we wlasnych
    aplikacjach,
  • wzorcowa implementacja,
  • mozliwosc podmiany implementacji wybranego modulu
    (np. parsera).
  • Wersja 1.3 (wrzesien 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 (?).

27
Parsery XML przeglad
  • Xerces
  • Java, C, Perl, komponent COM
  • XML Schema, SAX 2.0, DOM level 1, 2 i czesciowo
    3, XInclude.
  • XP (Java) i Expat (C) Jamesa Clarka
  • model zdarzeniowy (w XP zgodny z SAX),
  • nie sprawdzaja poprawnosci strukturalnej.
  • Oracle XML Parser
  • SAX, DOM, XPath,
  • Java, C, C, PL/SQL.

28
Parsery XML przeglad
  • Perl
  • XMLParser pakiet wykorzystujacy parser Expat
    J. Clarka napisany w C,
  • XMLDOM.
  • Python
  • PyXML.
  • Microsoft XML Core Services (MSXML 4.0,
    komponent COM)
  • SAX, DOM, Schema Object Model,
  • mozliwosc dostepu z róznych jezyków
    programowania JavaScript, Java, Perl, Python,
    SQL, Visual Basic.
  • XML w .NET
  • SAX, DOM, XPath, XMLReader (pull parsing).

29
Parsery XML przeglad
  • 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.

30
Gdzie szukac dalej
  • 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

31
Gdzie szukac dalej
  • Gajda, P., SAX i DOM, czyli XML w naszych
    aplikacjach
  • Software 2.0, nr 6/2001, Wydawnictwo Software
  • Brauncajs, T., JAXB i Castor wiazanie XML-a w
    Javie
  • Software 2.0, nr 6/2002, Wydawnictwo Software
  • Plechawski, M., Nie pozwól sie popychac
  • Software 2.0, nr 6/2003, Wydawnictwo Software
  • Czarnik, P., Alternatywne zródla zdarzen SAX
  • Software 2.0, nr 6/2004, Wydawnictwo Software
Write a Comment
User Comments (0)
About PowerShow.com