Technologie Internetu - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Technologie Internetu

Description:

Title: PowerPoint Presentation Last modified by: habela Created Date: 1/1/1601 12:00:00 AM Document presentation format: Pokaz na ekranie Other titles – PowerPoint PPT presentation

Number of Views:87
Avg rating:3.0/5.0
Slides: 32
Provided by: myk3
Category:

less

Transcript and Presenter's Notes

Title: Technologie Internetu


1
  • Technologie Internetu
  • wyklad 11 Interfejsy programistyczne dla
    przetwarzania XML
  • Piotr Habela
  • Polsko-Japonska Wyzsza Szkola Technik
    Komputerowych

2
W poprzednim odcinku
  • Jezyk XSL w swojej czesci dotyczacej
    transformacji (XSLT) stanowi srodek dla
    deklaratywnego okreslania sposobu przeksztalcania
    dokumentów.
  • Uruchamianie konkretnych szablonów (przez podanie
    ich nazwy) oraz przekazywanie don parametrów
    wnosza do XSLT cechy programowania
    proceduralnego.
  • Zasadnicze scenariusze przeksztalcen XSLT
  • Przebudowa struktury dokumentu XML
  • Generowanie HTML w oparciu o dane z pliku XML
  • Formatowanie danych XML do postaci XSL-FO
  • Przetwarzanie jednego arkusza XSLT w inny (np.
    celem personalizacji sposobu wyswietlania)
  • Tworzenie zwyklego tekstu jako dokumentu
    wyjsciowego.

3
Plan wykladu
  • Document Object Model (DOM) dokument XML jako
    drzewo wezlów
  • Simple API for XML (SAX) dostep strumieniowy
    oparty o zdarzenia
  • Java API for XML Processing (JAXP)
  • Java Architecture for XML Binding (JAXB)
  • JDOM i inne interfejsy.

4
Document Object Model (DOM)
  • Standard manipulacji dokumentami XML
    (specyfikacja W3C). Interfejs programistyczny do
    dokumentów HTML i XML.
  • Hierarchia dokumentu zostaje odwzorowana w
    pamieci komputera w postaci drzewa obiektów.
  • Mozliwosc nawigowania w dokumencie, modyfikowania
    go oraz tworzenia nowych dokumentów w pamieci.
  • Specyfikacja zaprojektowana jako niezalezna od
    konkretnego jezyka programowania i platformy
    (definicje interfejsów w Java, ECMAScript i IDL).
  • Zwykle implementowany w oparciu o SAX (zob.
    dalej).
  • Specyfikacja zlozona z kilku czesci. M.in. Core
    (niskopoziomowy zbiór interfejsów mogacych
    reprezentowac kazdy ustrukturalizowany dokument),
    HTML (interfejsy wyzszego poziomu wprowadzone dla
    poprawienia wygody dostepu), XPath (wykorzystanie
    XPath w przetwarzaniu dokumentu).

5
DOM rozwój specyfikacji
  • DOM Level 1
  • Core obiekty reprezentujace strukture
    dokumentu
  • HTML dostep do dokumentów HTML
  • DOM Level 2
  • Poprawiona specyfikacja czesci Core
  • Events reakcje systemu na zdarzenia
    uzytkownika
  • Style manipulacja arkuszami stylów
  • Views widoki drzewa dokumentu (po zastosowaniu
    stylów CSS)
  • Traversal Range sposoby nawigowania
  • DOM Level 3 (obecnie jako Working draft)
  • Poprawiona specyfikacja Core oraz Events
  • modele zawartosci (DTD, Schemas) wraz z walidacja
    dokumentu
  • ladowanie i zapisywanie plików
  • XPath dostep do zawartosci dokumentu za pomoca
    wyrazen XPath.

6
Struktura dokumentu DOM
  • DocumentElement wierzcholek drzewa dokumentu
  • Node kazdy z wezlów (w tym elementy)
  • Element a wezel element to jeden z wystepujacych
    w dokumencie DOM rodzajów wezlów (m.in. wezly
    tekstowe, atrybutowe).
  • Wezly elementowe zwykle zawieraja wezly potomne
    elementowe, tekstowe lub obu rodzajów.
  • Wezly atrybutowe informacja podlegla konkretnemu
    wezlowi elementowemu. Nie sa okreslane jako
    potomkowie.
  • Wezel dokumentu rodzic dla wszystkich
    pozostalych wezlów.
  • CData odpowiada sekcji znakowej, zawierajacej
    zawartosc nie przeznaczona do przetwarzania
  • Comment (komentarz) ProcessingInstruction
    (instr. przetwarzania)
  • DocumentFragment stosowany jako wezel roboczy
    przy budowaniu lub rekonstruowaniu dokumentu XML.
  • Ponadto Entity, EntityReference, Notation.

7
Najwazniejsze interfejsy DOM (1)
  • DOMImplementation 
  • Umozliwia sprawdzenie, czy dana funkcjonalnosc
    jest zaimplementowana, tworzenie nowej instancji
    dokumentu tworzenie nowego typu dokumentu.
  • Document 
  • Udostepnia korzen drzewa.
  • Okresla typ dokumentu, implementacje DOM oraz
    element-korzen.
  • Umozliwia  tworzenie elementu, atrybutu, wezla
    tekstowego, komentarza, sekcji znakowej,
    instrukcji przetwarzania, referencji do encji
    zewnetrznej  tworzenie fragmentu dokumentu (zob.
    dalej) oraz wyszukiwanie elementów wg nazwy
    znacznika, wedlug nazwy wezla oraz importowanie
    wezla do aktualnej lokalizacji.
  • W wersji 2 uwzgledniono tworzenie elementów i
    atrybutów oraz wyszukiwanie elementów, z
    uwzglednieniem przestrzeni nazw.
  • W wersji 3 pojawily sie metody do odczytu i
    ustawienia atrybutów deklaracji XML, tj. version,
    encoding, standalone.

8
Najwazniejsze interfejsy DOM (2)
  • DocumentFragment, Node
  • Udostepnia nastepujace metody insertBefore,
    replaceChild, removeChild, appendChild,
    hasChildNodes, cloneNode, normalize.
  • (od w. 2) rozszerzenia uwzgledniajace Namespaces
    atrybuty namespaceURI, prefix, localName.
  • wlasciwosci tylko do odczytu nodeName,
    nodeValue (takze aktualizacja), nodeType,
    parentNode, childNodes, firstChild, lastChild,
    previousSibling, nextSibling, attributes,
    ownerDocument.
  • Wlasciwosc nodeType (typu calkowitoliczbowego),
    okresla, z jakiego rodzaju wezlem mamy do
    czynienia. Okreslono tez nazwane stale dla
    wygodniejszej identyfikacji tego kodu rodzaju
    wezla, np. ELEMENT_NODE, TEXT_NODE.
  • Porównywanie wezlów (od wersji 3)  tozsamosc 
    isSameNode(Node), równosc isEqualNode(Node),
    okreslenie stopnia pokrewienstwa w strukturze
    compareTreePosition(Node)

9
Najwazniejsze interfejsy DOM (3)
  • NodeList
  • okresla dlugosc listy, umozliwia pobranie n-tego
    wezla
  • Element
  • Szczególny rodzaj wezla (Node).
  • Dostep do atrybutów elementu odczyt, usuniecie,
    modyfikacja, dodanie.
  • Wyszukiwanie podelementów.
  • Attr
  • Okresla nazwe atrybutu, wartosc (odczyt i
    modyfikacja), element-wlasciciela, oraz czy
    atrybut zostal wyspecyfikowany czy tez jest to
    wartosc domyslna z definicji dokumentu.
  • CharacterData (abstrakcyjny)
  • Wystepuje jako Comment, Text lub CDATASection
  • Udostepnia zawartosc tekstowa, dlugosc
    zawartosci, operacje do modyfikacji i pobierania.

10
Modul DOM Traversal
  • Sluzy uproszczeniu poruszania sie po drzewie
    dokumentu DOM.
  • Zlozony z 4 interfejsów
  • DocumentTraversal sluzy wytworzeniu obiektu do
    nawigowania, bedacego wystapieniem jednego z
    dwóch interfejsów
  • NodeIterator (szybszy) umozliwia jedynie
    poruszanie sie w przód i wstecz wzdluz plaskiej
    listy wezlów.
  • TreeWalker z kolei uwzglednia hierarchiczny model
    elementu.
  • NodeFilter. Sluzy okreslaniu, jakie wezly beda
    brane pod uwage przy poruszaniu sie po drzewie za
    pomoca którejs z powyzszych metod.
  • Poniewaz wszystko to sa interfejsy, nalezy
    ustalic, która z klas w dostepnym nam parserze
    implementuje DocumentTraversal. Zwykle jest to ta
    sama klasa, która implementuje org.w3c.dom.Documen
    t.

11
Uzycie DOM Traversal
  • Interfejs NodeFilter nalezy zaimplementowac celem
    wyselekcjonowania interesujacych nas wezlów. Jego
    metoda acceptNode przyjmuje jako parametr
    testowany wezel, zas zwraca jako rezultat liczbe
    typu short, oznaczajaca dyspozycje przyjecia lub
    ominiecia testowanego wezla.
  • W wypadku zarówno NodeIterator jaki i TreeWalker,
    tworzenie ich obiektów wymaga nastepujacych
    parametrów
  • wezel startowy (korzen przeszukiwania)
  • rodzaje wezlów do przeszukania
  • obiekt NodeFilter
  • czy rozwijac referencje do encji?
  • Dobór optymalnego stylu nawigacji wraz z
    mozliwoscia definiowania filtra znacznie
    ulatwiaja selekcje szukanych wezlów.

12
Modul DOM Range
  • Podobnie jak Traversal, dostarcza srodków
    wyzszego poziomu dla selekcjonowania zawartosci
    dokumentu.
  • Jak wskazuje nazwa, wyznaczane sa ciagle zakresy
    w ramach dokumentu. Sa one specyfikowane poprzez
    podanie wezla poczatkowego oraz przesuniecia
    (offset) w tym wezle oraz analogicznych danych
    dla wezla koncowego.
  • Przesuniecie (offset) oznacza (zaleznie od
    rodzaju wezla) liczbe wezlów potomnych lub liczbe
    znaków (interpretacja zalezna od sposobu
    kodowania).
  • Selekcje taka mozna sobie wyobrazic jako podobna
    do podswietlenia fragmentu tekstu w edytorze.
    Jednakze nie jest mozliwe zbudowanie zakresu,
    który rozpoczynalby sie lub konczyl wewnatrz tagu
    elementu ani wewnatrz nazwy encji lub odnosnika.
  • Z drugiej zas strony istnieje pojecie czesciowej
    selekcji danego wezla, jesli dokladnie jeden z
    punktów wyznaczajacych zakres (boundary-points)
    znajduje sie w jego wnetrzu.

13
Funkcjonalnosc modulu DOM Range
  • Funkcjonalnosc dla selekcji obejmuje
  • wskazanie punktów poprzez wezly i przesuniecia w
    ich ramach
  • wybranie wezla
  • wybranie zawartosci wezla
  • okreslenie punktu wzgledem danego wezla (przed
    lub za).
  • Pozostala funkcjonalnosc to m.in.
  • usuwanie lub ekstrakcja (celem przemieszczenia)
    zakresu (elementy czesciowo wyselekcjonowane
    pozostaja w swoich pierwotnych miejscach,
    uszczuplone jedynie o wyselekcjonowana
    zawartosc)
  • porównywanie pozycji dwóch zakresów
  • wstawianie wezla w wytyczone miejsce
  • wstawianie wezla otaczajacego dany zakres
    (generowany jest wyjatek, jezeli zakres czesciowo
    selekcjonuje jakis nietekstowy wezel).

14
SAX Simple API for XML
  • Projektowany dla Javy (org.xml.sax,
    org.xml.sax.helpers) pózniej takze inne jezyki
    jak Python czy C.
  • Okreslany jako interfejs zdarzeniowy
    zdarzeniem jest napotkanie znaczników
    otwierajacych, zamykajacych, atrybutów itd.
    Umozliwia reagowanie na wybrane zdarzenia.
  • Przetwarzanie strumieniowe (jeden kierunek
    przetwarzania) gt motywowane sprawnoscia
    dzialania w wypadku duzych dokumentów.
  • Wersja 2 (SAX2) wspierane przestrzenie nazwowe.
  • Projektowanie procesora SAX okreslenie
    odpowiedzi na okreslone zdarzenia przetwarzania.

15
Zdarzenia w parserze SAX
  • Typowe zdarzenia dla minimalnego dokumentu XML
  • poczatek dokumentu
  • koniec dokumentu
  • poczatek elementu
  • koniec elementu
  • odebrany tekst przejscie do nastepnej linii
    inny znak bialy
  • odebrany tekst np. zawartosc tekstowa elementu
  • Scenariusz przetwarzania
  • ustalenie sposobów obslugi interesujacych nas
    zdarzen (implementacja metod obslugujacych
    odpowiednie zdarzenia)
  • wywolanie metody parse() interfejsu XMLReader
  • XMLFilter stanowi rozszerzenie XMLReader,
    pozwalajace na budowanie lancuchów kolejno
    stosowanych filtrów umozliwia to dekompozycje
    zlozonego przetwarzania.

16
Implementacja parsera SAX
  • Klasa SAXParserFactory jest uzywana do utworzenia
    obiektu SAXParser.
  • Ten ostatni zawiera w sobie obiekt SAXReader, do
    którego mozna podlaczyc cztery obiekty niejako
    wtyczki okreslajace sposób przetwarzania
  • ContentHandler Najwazniejsze metody
    startDocument, endDocument, startElement,
    endElement wolane przy napotkaniu odpowednich
    znaczników w przebiegu przez dokument. Zwykle sa
    implementowane przez aplikacje. Ponadto metody
    characters i processingInstruction
    analogicznie, wolane po napotkaniu takowych bytów
    w przetwarzanym dokumencie.
  • ErrorHandler Metody error, fatalError i warning
    wolane przy bledach parsowania. Domyslnie
    wyjatki przy fatal errors, ignorowanie
    pozostalych. Moze zaistniec koniecznosc
    zmodyfikowania tego zachowania.
  • DTDHandler Metody zwiazane z przetwarzaniem DTD
    dotyczacym obslugi encji nieprzetwarzanych i
    specyfikacji ich notacji.
  • EntityResolver Deklaruje metode resolveEntity
    wolana przy koniecznosci odszukania encji
    zewnetrznej, do której odwolanie napotkano w
    dokumencie.

17
DOM a SAX - podsumowanie
  • Interfejs DOM
  • Odtwarza strukture dokumentu w pamieci
  • Umozliwia modyfikacje dokumentu
  • Pozwala na swobodny dostep i nawigowanie w
    dowolnym kierunku
  • Znaczne wymagania odnosnie zasobów efektywny dla
    niewielkich dokumentów.
  • Interfejs SAX
  • Nie pozwala na modyfikacje struktury dokumentu
  • Przetwarzanie strumieniowe zapewnia sprawnosc
    nawet dla duzych dokumentów
  • Dostep do dokumentu za pomoca tego interfejsu
    uchodzi za trudniejszy.

18
Java API for XML Processing (JAXP)
  • Wspólny standardowy interfejs tworzacy podstawe
    dla wykorzystania interfejsów SAX, DOM oraz XSLT
    z poziomu jezyka Java, zapewniajac niezaleznosc
    wykorzystujacego je kodu od konkretnych
    implementacji.
  • Podstawowe interfejsy zawarte w pakiecie
    javax.xml.parsers. Pozwalaja na podlaczania
    dowolnych zgodnych parserów.
  • W zakresie interfejsów SAX i DOM udostepnia
    fabryki obiektów realizujacych oba te rodzaje
    przetwarzania.
  • W zakresie wsparcia XSLT, JAXP dostarcza
    interfejsów zdefiniowanych w pakiecie
    javax.xml.transform.
  • Klasa TransformerFactory tworzy obiekt
    Transformer przyjmujacy plik zródlowy oraz
    wytyczne (w postaci pliku deklaracji XSLT) celem
    wygenerowania dokumentu wynikowego.
  • Poza dokonywaniem zlozen dokumentu zródlowego z
    odpowiednim arkuszem XSLT, mozliwe jest równiez
    kierowanie transformacja poprzez dostarczanie
    wartosci parametrów XSLT.

19
JAXP i DOM podstawowe kroki
  • Tworzymy obiekt klasy DocumentBuilderFactory.
    Mozna dlan okreslic
  • setValidating czy przetwarzany XML bedzie
    walidowany zgodnie z okreslonym dlan DTD lub
    schematem
  • setCoalescing Czy sekcje CDATA maja byc
    przeksztalcane na tekst i zlewane z otaczajacym
    je tekstem (false).
  • setExpandEntityReferences Czy zewnetrzne encje
    beda odczytywane i wstawiane do dokumentu (true).
  • setIgnoringcomments Czy komentarze beda
    ignorowane (false).
  • setIgnoringElementContentWhitespace Czy znaki
    biale wewnatrz elementów maja byc ignorowanie
    (false).
  • setNamespaceAware Czy informacja o
    przestrzeniach nazwowych ma byc brana pod uwage
    (false).
  • Tworzymy zen obiekt klasy DocumentBuilder
  • posiada on metode parse (mogaca pobierac jako
    parametr m.in. plik dyskowy, strumien wejsciowy
    lub URI), zwracajaca obiekt o interfejsie
    Document.

20
JAXP i DOM podstawowe kroki
  • Odwolanie do obiektu Document
  • umozliwia pobranie elementu-korzenia (jako
    obiektu klasy Element) lub wyszukiwanie
    okreslonych podelmentów
  • Manipulacja zawartoscia
  • Dostep do elementów obiekt Element
  • Dostep do wezlów innego rodzaju (klasa Node).
  • Sposoby pobierania wezlów
  • Iteracja po wezlach potomnych metody
    getFirstChild oraz getNextSibling
  • Wyszukanie potomków danego typu metoda
    getElementsByTagName("nazwa") i przegladanie
    zwróconej listy.
  • Dostep do atrybutów
  • Metoda getAttributes() na przetwarzanym wezle
    elementu
  • Metody getNodeName() i getNodeValue() dla
    zwróconych atr.

21
DOM operacje modyfikujace (1)
  • W wezlach o odpowiednim typie (tj. Attr,
    CDATASection, Comment, ProcessingInstruction,
    Text) mozna modyfikowac wartosc operacja
    setNodeValue(wartosc)
  • Dolaczanie nowego wezla moze przebiegac
    nastepujaco
  • Stworzenie wezla operacje createTextNode,
    createElement, createComment i odpowiednie inne,
    wywolywane na obiekcie typu Document.
  • Umieszczenie wezla w strukturze na obiekcie
    wezla-rodzica wolamy metode appendChild(nowyWezel)
    celem dolaczenia go jako ostatniego dziecka,
    albo insertBefore(nowyWezel, wezelSasiedni)
    celem umieszczenia go wczesniej.
  • Usuwanie wezla operacja removeChild(usuwanyWezel)
    wolana na obiekcie wezla-rodzica. Operacja
    zwraca referencje do obiektu wezla, wiec moze
    posluzyc do przemieszczania wezla (wstawienie w
    inne miejsce j.w.).

22
DOM operacje modyfikujace (2)
  • Mozna równiez zastapic wybrany wezel, wywolujac
    dla rodzica operacje replaceChild(poprzedni,
    nowy).
  • Modyfikacja atrybutów
  • Nowe wezly atrybutowe tworzymy operacja obiektu
    Document doc.createAttribute(nazwaAtrybutu)
  • Dodawanie atrybutu operacja setAttributeNode(wez
    elAtrybutu), wolana na docelowym elemencie (tzn.
    na obiekcie wezla elementu)
  • Alternatywnie (krócej) operacja
    setAttribute(nazwaAtrybutu, wartoscAtrybutu)
    wolana na elemencie.
  • Usuwanie atrybutu operacja removeAttribute(nazwaA
    trybutu).

23
DOM zapis modyfikacji
  • Zapis oparty na srodkach dostepu do plików
    oferowanych przez API Javy (pakiet java.io)
    uzycie klas File oraz FileWriter
  • Zapis samego drzewa dokumentu mozna zrealizowac w
    oparciu o metode toString() wezlu korzenia.
  • Z kolei chcac zapisac w pliku deklaracje XML i
    definicje DTD, musimy je skonstruowac osobno.
    Przepisujac dokument mozemy odzyskac odwolanie do
    zewnetrznego DTD (tu w postaci id systemowego)
    za pomoca operacji naszDokument.getDoctype().getS
    ystemId()
  • Inne mozliwosci przekazania dokumentu wynikowego
    obejmuja wyjscie strumieniowe (np. do parsera
    SAX), transformacje XSL czy tez komunikat SOAP.

24
Java Architecture for XML Binding (JAXB)
  • Reprezentuje inne podejscie do przetwarzania XML,
    zaliczane do tzw. wiazan XML.
  • JAXB powstala w ramach Java Community Process
    (JSR-031)i jest rozprowadzana m.in. w ramach
    pakietu Java Web Services Developer Pack.
  • Odpowiednie klasy Javy generowane (przez
    narzedzie zwane kompilatorem wiazania) sa z
    definicji XML Schema. Sa zwane klasami
    zawartosci (content classes). Z uwagi na
    nieregularnosc DTD, jego ograniczenia (w tym brak
    wsparcia dla przestrzeni nazwowych), zrezygnowano
    z jego wspierania na rzecz XML Schema.
  • Przeksztalcenie pomiedzy zawartoscia XML a
    odpowiadajacymi jej strukturami obiektów Javy i
    odwrotnie sa okreslane odpowiednio jako
    unmarshalling i marshalling.Ta reprezentacja za
    pomoca obiektów Javy moze byc przedmiotem
    przegladania, aktualizowania i walidacji.

25
JAXB zasada dzialania
  • Podobnie jak w DOM, struktura dokumentu jest
    wczytywana do pamieci. Jednakze z uwagi na to, ze
    wygenerowane klasy sa wyspecjalizowane (a nie
    generyczne jak w wypadku DOM), mamy do czynienia
    ze struktura oszczedniejsza w sensie zasobów i
    prostsza w obsludze.
  • Odwzorowanie definicji schematu dokumentu na
    klasy Javy przypomina swym charakterem kompilacje
    definicji IDL standardu CORBA, tworzaca tzw.
    pienki i szkielety.
  • Nie wszystkie zadeklarowane ograniczenia wartosci
    zapisane w XML Schema przekladaja sie na
    ograniczenia typów argumentów reprezentujacych je
    w Javie operacji. Jednakze poprawnosc
    przetwarzanej struktury moze byc kontrolowana
    dzieki istniejacemu w JAXB mechanizmowi
    walidacji. Walidacja moze byc dokonywana przy
    wyczytywaniu XML oraz na zadanie.

26
JAXB scenariusz uzycia
  • Dysponujac definicja XML Schema mozna przystapic
    do konstruowania aplikacji
  • Wygenerowanie kodu zródlowego Javy z XML Schema
    za pomoca kompilatora wiazania.
  • Kompilacja wygenerowanego kodu.
  • Stworzenie aplikacji korzystajacej z
    wygenerowanych klas zawartosci
  • Utworzenie struktury dokumentu XML zgodnej ze
    zródlowym schematem poprzez jej wczytanie w
    postaci kodu XML lub poprzez instancjonowanie
    wygenerowanych klas.
  • Odczyt i ewentualna manipulacja danych.
  • Ewentualna walidacja modyfikacji.
  • Zapisanie struktury do dokumentu XML.

27
JAXB skladniki technologii
  • Dokument XML Schema okresla budowe
    przetwarzanego dokumentu XML zródlo danych dla
    kompilatora wiazania.
  • Deklaracje wiazania precyzuja sposób
    konstruowania nazw w obiektach Javy (w tym nazw
    docelowych pakietów). Moga wystapic jako
    adnotacje w schemacie zródlowym albo w osobnym
    pliku.
  • Kompilator wiazania tworzy kod klas Javy na
    podstawie zródlowego XML Schema.
  • Implementacja Binding Framework Odczyt, zapis,
    walidacja.
  • Klasy zawartosci wygenerowane ze schematu
    reprezentuja zawartosc dokumentu.
  • Aplikacja Javy korzysta z binding framework i z
    klas zawartosci celem przetwarzania okreslonego
    XML.
  • Wejsciowe i wyjsciowe dokumenty XML .

28
JAXB skladniki technologii
Zródlo The JavaArchitecture for XML Binding
(JAXB) Users Guide - Scott Fordin
29
DOM a Java
  • Document Object Model powstal jako specyfikacja
    niezalezna od konkretnego jezyka programowania i
    zapewniajaca dostep do kompletnej zawartosci
    dokumentu.
  • Z puktu widzenia wykorzystania w Javie posiada on
    pewne wady
  • Znaczna konsumpcja zasobów szczególowa
    reprezentacja dokumentu jest w calosci
    odtwarzania w pamieci.
  • Brak wykorzystania udogodnien specyficznych dla
    Javy, jak przeciazanie, Collection Framework.
  • Wobec tego podjeto prace nad interfejsami dla
    Javy, które za cene genrycznosci moglyby osiagnac
    lepsza wygode wykorzystania i mniejsza konsumpcje
    zasobów, jednak bardziej elastycznymi niz
    wymagajaca statycznej wiedzy o schemacie JAXB.

30
JDOM http//www.jdom.org
  • Narzedzie udostepniajace zaprojektowany dla Javy
    model dokumentu XML. Jak sugeruje nazwa,
    inspirowany DOM stanowi rozwiazanie
    alternatywne, latwiejsze w uzyciu, lecz
    nieprzenosne na inne jezyki programowania.
  • Rozwijane jako Java Community Process (JSR 102).
  • Mozliwosci integracji z DOM i SAX zarówno
    wejscie jak i wyjscie przy przetwarzaniu z
    uzyciem JDOM moze przybrac postac plików XML,
    drzew DOM lub zdarzen SAX.
  • Istnieje mozliwosc wykorzystania XSLT i XPath do
    struktur JDOM.
  • Cecha szczególna API JDOM jest oparte na klasach
    konkretnych Javy, nie zas na interfejsach.
    Zapewnia to prostote i zwiezlosc (uzywamy
    konstruktorów zamiast posrednictwa fabryk)
    kosztem elastycznosci implementacji.

31
Inne API
  • DOM4J http//www.dom4j.org
  • Kolejny projekt typu open-source. API oparte na
    interfejsach. Moze to byc przewaga w wypadku
    koniecznosci dostosowania implementacji do
    konkretnych potrzeb (np. do bardzo duzych zbiorów
    XML).
  • Korzysta z parsera SAX.
  • Podobna motywacja prostsze i lzejsze od DOM API,
    stworzone dla jezyka Java.
  • JAXM (Java API for XML Messaging)
  • Wymiana asynchronicznych komunikatów XML pomiedzy
    aplikacjami.
  • JAX-RPC (Java API for XML-based Remote Process
    Communications)
  • Wymiana synchronicznych komunikatów pomiedzy
    aplikacjami.
  • JAXR (Java API for XML Registries)
  • Publikowanie i odszukiwanie informacji o uslugach
    Webu.
Write a Comment
User Comments (0)
About PowerShow.com