SAX i DOM wykorzystanie XMLa we wasnych aplikacjach
- Slides: 20
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: 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
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 • stosowanie różnych parserów 5
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 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 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. 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 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 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 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ę 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 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 <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 Section 16
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 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 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 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
- "dbms"
- Difference between sax and dom
- Xml sax dom
- Sax dom
- Advantages of xml
- Difference between dom and sax
- Karolina mroziska
- Wykorzystanie wiedzy w praktyce
- Gospodarcze wykorzystanie skał
- Kod paskowy rezystorów kalkulator
- Phm sax
- Sax time series
- Sax
- 자바 sax xml 파싱
- Sax vs jaxb
- Lernsax imap
- Ally skills workshop
- Desy sax
- Sax nnn
- Sax
- Simple api for xml