SAX i DOM wykorzystanie XMLa we wasnych aplikacjach

  • Slides: 20
Download presentation
SAX i DOM wykorzystanie XML-a we własnych aplikacjach Simple API for XML Parsing Document

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

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: n model zdarzeniowy n obiektowość n prostota n sekwencyjność n szybkość n status - darmowy n prototypowany w Javie 2

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

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

Ilustracja działania SAX Przykład wywołania: parse Parser - XMLReader <tekst> <tytul styl="ital"> Spojrzenia na

Ilustracja działania SAX Przykład wywołania: parse Parser - XMLReader <tekst> <tytul styl="ital"> Spojrzenia na dokument XML </tytul> </autor> </tekst> set. Content. Handler Aplikacja start. Document start. Element ignorable. Whitespace start. Element characters end. Element ignorable. Whitespace throw SAXException 4

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

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 SAX 2 • Obsługa przestrzeni nazw • Cechy (features) -

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

SAX 2 - pakiet org. xml. sax Interfejsy implementowane przez parser: Interfejsy implementowane przez

SAX 2 - pakiet org. xml. sax Interfejsy implementowane przez parser: Interfejsy implementowane przez użytkownika parsera: XMLReader n parse (2 metody) n set. Document. Handler n. . . Attributes n get. Length n get. Name (2 metody) n get. Value (2 metody) Opcjonalny: Locator Content. Handler n characters, ignorable. Whitespace n start. Document, end. Document n start. Element, end. Element n processing. Instruction n set. Document. Locator Error. Handler, DTDHandler, Entity. Resolver 7

SAX 2 - pakiet org. xml. sax Standardowa klasa: org. xml. sax. Input. Source

SAX 2 - pakiet org. xml. sax Standardowa klasa: org. xml. sax. Input. Source może pobierać dane z Input. Stream, Reader, String Wyjątek: SAXException - ten wyjątek jest podnoszony w przypadku wystąpienia błędu Klasy pomocnicze (pakiet org. xml. sax. helpers): Default. Handler - aplikację tworzymy tworząc podklasę tej klasy XMLReader. Factory Attributes. Impl Locator. Impl 8

SAX kroki implementacji 1. Tworzymy podklasę klasy org. xml. sax. helpers. Default. Handle 2.

SAX kroki implementacji 1. Tworzymy podklasę klasy org. xml. sax. helpers. Default. Handle 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 n Implementują interfejs: org. xml. sax. XMLFilter

Filtry SAX Co to są Filtry SAX n Implementują interfejs: org. xml. sax. XMLFilter n Rozszerzają klasę: org. xml. sax. helpers. XMLFilter. Impl n Specyficzne implementacje interfejsów: Content. Handler, DTDHandler, Entity. Resolver, Error. Handler n Można je łączyć w łańcuchy: XMLReader reader; . . . XMLFilter. Impl f 1 = new XMLFilter. Impl(reader); XMLFilter. Impl f 2 = new XMLFilter. Impl(f 1); f 2. parse(. . . ); 10

Przykładowe parsery SAX Java: n Xerces-J (SAX 2), n SUN XML Parser, n Oracle

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

DOM Definicja: obiektowy model dostępu, stukturalizacji i nadawania stylu dokumentom n DOM - oficjalna

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

DOM Core • Bazowa cześć specyfikacji DOM • Umożliwia: n budowanie dokumentów n nawigację

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

DOM Core • DOM Core ma swoje ustalone tłumaczenie na Javę, • tłumaczeń na

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 MSXML 3 14

DOM - prezentacja graficzna Prezentacja graficzna obiektu (drzewa) DOM i odpowiadającego mu dokumentu XML

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

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

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

Interfejs Node ndostęp do zawartości n get. Attributes() n get. Child. Nodes() n get.

Interfejs Node ndostęp do zawartości n get. Attributes() n get. Child. Nodes() n get. First. Child() n get. Last. Child() n get. Next. Sibling () n get. Previous. Sibling () n get. Node. Name() n get. Node. Value() n get. Node. Type() n get. Owner. Document() n get. Parent. Node() n has. Child. Nodes() nmanipulacja zawartością n append. Child(Node) n insert. Before(Node, Node) n remove. Child(Node) n replace. Child(Node, Node) n set. Node. Value(String) n set. Node. Name(String) n klonowanie n clone. Node(boolean) n typy obiektów n ATTRIBUTE_NODE, . . . 17

Klasy pomocnicze DOM Named. Node. Map n tablica haszująca obiektów Node (atrybuty!) Node. List

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

DOM a DOM 2 - różnice • Najważniejsze różnice między DOM, a DOM 2

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

SAX DOM · Przetwarzanie wsadowe. · Całe drzewo dokumentu ładowane do pamięci. · Oszczędny

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. 20