160 likes | 289 Views
Du šan Ilić. SAX Simple API for XML. Alternativa DOM-u Direktan API zasnovan na događajima Sekvencijalni pristup Brži i koristi manje memorije Originalno izveden u programskom jeziku Java Besplatan. O SAX-u. Decembra 1997. godine počeo proces razvitka SAX-a ( YAXPAPI , Peter Murray-Rust)
E N D
Dušan Ilić SAXSimple API for XML
Alternativa DOM-u Direktan API zasnovan na događajima Sekvencijalni pristup Brži i koristi manje memorije Originalno izveden u programskom jeziku Java Besplatan O SAX-u
Decembra 1997. godine počeo proces razvitka SAX-a (YAXPAPI, Peter Murray-Rust) Diskusija o dizajnu vođena na XML-DEV mailing listi Januara 1998. godine izašla beta verzija 11. Maj 1998. SAX v1.0 Januara 2002. SAX 2.0.1 (podrška za namespace) Istorija
SAX je API zasnovan na događajimakoji služi začitanje XML dokumenata Zasnovan je na sekventnom pristupu Korisnik definiše metode koje će biti pozvane kad parser naiđe na neki događaj
XML text čvorovi XML elment čvorovi XML instrukcije XML komentari Događaji
<?xml version="1.0"?> <doc> <param>Hello,world!</param> </doc> Primer start document start element: doc start element: param characters: Hello,world! end element: param end element: doc end document
Količina memorije koju obično SAX parser koristi je mnogo manja u odnosu na memoriju koju DOM parser koristi • Količina memorije koju SAX parser koristi zavisi od maksimalne dubine XML dokumenta i maksimalnoj količini podataka smeštenoj u XML atributu jednog XML elementa • Vrlo korisno kod velikih XML dokumenata • SAX je bolji za pronalaženje i čitanje pojedinačnog podatka iz strukture Prednosti
Ne postoji random pristup-SAX parsovanje je jednosmerno(podaci koji su pročitani ranije ne mogu se ponovo pročitati bez ponovnog parsovanja) • Leksičke informacije nisu dostupne("
" ili" " ili novi red će biti isto prikazani) Mane
SAX je primarno kolekcija interfejsa koji se nalaze u org.xml.sax paketu • XMLReader • ContentHandler • DTDHandler • ErrorHandler • XMLFilter • ...
Interfejs koji predstavlja XML parser • Da bi se parsovao dokument mora se napraviti instanca XMLReader-a pomoću XMLReaderFactory klase koja se nalazi u org.xml.sax.helpers paketu XMLReader parser=XMLReaderFactory.createXMLReader(); XMLReader
Svaki put kadaXMLReader pročitadeodokumenta on pozovemetodu iz svog ContentHandler-a • Primer ContentHandler-a public interface ContentHandler{ public void setDocumentLocator(Locator locator); public void startDocument() throws SAXException; public void endDocument() throws SAXException; public void startPrefixMapping(String prefix, String uri) throws SAXException; public void characters(char[] text, int start, intlenght) throws SAXException; . . . }
SAX koristi features(funkcije) i properties(osobine) da bi kontrolisao ponašanje parsera • Svaka funkcija i osobina ima ime koji je ustvari apsolutni URI.Ovi URI se koriste samo za imenovanje i ne moraju pokazivati na stvarnu stranu koju možete učitati u browser-u • Features su ili tačne ili netačne • Properties imaju vrednost određenog Object type-a Funkcije i osobine
SAX filtri stoje između parsera i klijentske aplikacije Presreću poruke koje ova dva objekta šalju međusobno Ovi filtri mogu samo proslediti poruke, ali ih mogu i menjati, zameniti ili blokirati Implementiraju se nasleđivanjem klase org.xml.sax.helpers.XMLFilterImpl Filtri
1. Napraviti objekat filtra 2. Napraviti XMLReader koji će parsovati dokument 3. Povezati filtar sa parserom[ setParent() metoda] 4. Instalirati ContentHandler u filtru 5. Parsovati dokument pozivanjem metode filtra parse() Parsovanje korišćenjem filtera
Šta je SAX? Koje sve događaje SAX parser obrađuje? Navesti primer parsovanja pomoću SAX-a Kada koristiti SAX? Navesti glavne interfejse SAX-a Pitanja