Implementacija Modela XML Parsera

35

Transcript of Implementacija Modela XML Parsera

Page 1: Implementacija Modela XML Parsera
Page 2: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

Implementacija izabranih XML modela parseramodela parsera

Page 3: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

W3C XML StandardW3C XML Standard .NET Framework namespace.NET Framework namespace .NET XML klase.NET XML klase

XML 1.0XML 1.0 System.XmSystem.Xmll

XML SchemaXML SchemaSystem.Xml System.Xml

System.Xml.SchemaSystem.Xml.SchemaXmlSchemaXmlSchemaXML SchemaXML Schema System.Xml.SchemaSystem.Xml.Schema

System.Xml.XslSystem.Xml.Xsl

XPathXPath

XSLTXSLT

DOMDOM System.XmlSystem.Xml

System.Xml System.Xml System.Xml.PathSystem.Xml.Path

XslTransform

PathPath

XmlDocumentXmlDocument

Implementacija W3C XML standarda u .NET Framework -u

Page 4: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

Obrada XML dokumenata u .NET Framework-u

DvaDva nanačinačina obradeobrade XMLXML dokumenatadokumenata::

•• PrekoPreko DOMDOM modelamodela korišćenjemkorišćenjem XmlDocumentXmlDocumentklaseklaseklaseklase

•• PrekoPreko PullPull modelamodela korišćenjemkorišćenjem XmlReaderXmlReader klaseklase..–– PullPull modelmodel jeje novnov pristuppristup zaza radrad sasa XMLXML

dokumentimadokumentima

Page 5: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

Pull model XML parseraPull model XML parsera

XmlReader classXmlReader class AplikacijaAplikacija

XmlTextReaderXmlTextReader

XmValidatingReaderXmValidatingReader

XmNodeReaderXmNodeReader

XMLXMLDOKUMENTDOKUMENT

SAX SAX AplikacijaAplikacija

Content HandlerContent Handler

Error HandlerError Handler

XMLXMLDOKUMENTDOKUMENT

Push model XML parsera

Page 6: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

Pull&Push modeli parsera

•• PullPull modelmodel nene formiraformira zaza XMLXML dokumentdokument memorijskomemorijsko stablostablo(slično(slično kaokao ii SAX)SAX)

•• SAXSAX jeje pushpush modelmodel –– dostavljadostavlja dogañajedogañaje aplikacijiaplikaciji kojakoja ihihobrañujeobrañuje

•• PullPull modelmodel omogućavaomogućava dada aplikacijaaplikacija zahtevazahteva prolaženjeprolaženjekrozkroz XMLXML dokumentdokument ii zatimzatim selektovanjeselektovanje ii pristuppristup samosamozahtevanimzahtevanim čvorovimačvorovima

•• PrednostPrednost PullPull modelamodela–– PoboljšavaPoboljšava performanseperformanse XmlReaderXmlReader--aa

Page 7: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

XmlReader klasa•• XmlReader XmlReader je aje apstraktna klasapstraktna klasa•• RReeprezentujeprezentuje pullpull modelmodel XMLXML parseraparsera•• MemorijskiMemorijski efikasan,efikasan, forwardforward--only,only, readread--onlyonly pristuppristup XMLXML

podacimapodacima

XmlReaderXmlReaderXmlReaderXmlReader

XmlTextReaderXmlTextReader XmlNodeReaderXmlNodeReaderXmlValidatingReaderXmlValidatingReader

Page 8: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

XmlTextReader klasa

•• ProveraProvera dada lili jeje XMLXML dokumentdokument dobrodobro--oformljenoformljen–– NeNe proveravaproverava validnostvalidnost

•• KonstruktoriKonstruktori omogućavajuomogućavaju čitanječitanje XMLXML iziz razlrazličičitihitih ulaznihulaznihizvoraizvora-- datotekdatotekaa,, streamstream objekatobjekat iliili TextReaderTextReader-- datotekdatotekaa,, streamstream objekatobjekat iliili TextReaderTextReader

• Read() metodametoda omoguomogućavaćava navigacijunavigaciju krozkroz čvorovečvorove XMLXMLdokumentadokumenta-- obeobezbezbeñujeñuje načinenačine zaza čitanječitanje sadržajasadržaja dokumenata,dokumenata,

elemenataelemenata ii atributaatributa

Page 9: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

XmlTextReader klasa

Korišćenje Korišćenje XmlTextReaderXmlTextReader--a:a:

•• IstanciranjeIstanciranje XmlTextReaderXmlTextReader objektaobjekta

•• ČitanjeČitanje ii obradaobrada podatakapodataka-- ParsiraParsira XMLXML dokumentdokument korikorišćenjemšćenjem Read()Read() metodemetode uu

WhileWhile petljipetlji

Page 10: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

XmlTextReader klasa

Page 11: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

XmlValidatingReader& XmlNodeReader klase

•• XmlValidatingReaderXmlValidatingReader obezbeñujeobezbeñuje podrškupodršku zaza validacijuvalidacijuXMLXML dokumentadokumenta uu skladuskladu sasa XSDXSD

•• XmlNodeReaderXmlNodeReader omogućavaomogućava čitanječitanje podstablapodstabla XMLXML DOMDOMstablastabla-- NeNe podržavapodržava validacijuvalidaciju

Page 12: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

xmlWriterxmlWriter klasaklasa•• ProgramskoProgramsko generisanjegenerisanje XMLXML dokumenatadokumenata uu datotekdatotekuu,, strstreaeam,m,

TextWriterTextWriter•• XMLWriterXMLWriter jeje aapstraktnapstraktna klasaklasa•• ReprezentujeReprezentuje brzi,brzi, forwardforward--only,only, memorijskimemorijski efikasanefikasan XMLXML writerwriter

XmlWriterXmlWriterXmlWriterXmlWriter

XmlTextWriterXmlTextWriter XmlNodeWriterXmlNodeWriter

Page 13: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

xmlTextWriterxmlTextWriter klasaklasa

KoriKorišćenješćenje XmlTextWriterXmlTextWriter--aa::

1)1) IstanciranjeIstanciranje XmlTextWriterXmlTextWriter--aa (konstruktor)(konstruktor)2)2) PostavljanjePostavljanje propertyproperty--aa (za(za formatiranjeformatiranje itditd..))2)2) PostavljanjePostavljanje propertyproperty--aa (za(za formatiranjeformatiranje itditd..))3)3) IzvršavanjeIzvršavanje WriteWrite metodemetode zaza generisanjegenerisanje XMLXML4)4) IzvršavanjeIzvršavanje CloseClose()() metodemetode

Page 14: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

Page 15: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

XMLDocumentXMLDocument klasaklasa

•• XmlDocumentXmlDocument obezbedjujeobezbedjuje podrškupodršku WW33CC DOMDOM modelamodela-- ReprezentujeReprezentuje XMLXML dokumentdokument kaokao memorijskumemorijsku strukturustrukturu

stablastabla

•• IzvedenaIzvedena iziz XmlNodeXmlNode klaseklase

Page 16: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

•• Korišćenje Korišćenje XmlDocumentXmlDocument klaseklase

// konstruktor// konstruktorXmlDocument doc = new XmlDocument ();XmlDocument doc = new XmlDocument ();// ucitava// ucitavanjenje XMLXML dokumentdokumentaadoc.Load ("Studenti.xml");doc.Load ("Studenti.xml");// ispis sadr// ispis sadržaj xml dokumentažaj xml dokumentaConsole.WriteLine(doc.InnerXml.ToString ());Console.WriteLine(doc.InnerXml.ToString ());

Page 17: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера• DOM tretira XML podatke kao standardni skup objekata.

• System .Xml namespace pruža programsku reprezentaciju XMLdokumenata i čvorova.– zasnovan je na W3C DOM Level 1 Core i DOM Level 2 Core

preporukama.

• Koncepti koje pruža System.Xml namespace: • Koncepti koje pruža System.Xml namespace: – XmlDocument– XmlNode– XmlNodeList– XmlAttribute– XmlAttributeCollection– ChildNodes …

• Dakle, kao rezultat parsiranja dobija se XmlDocument klasa i klasekoje su sa njom povezane.

Page 18: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

• XmlNode objekat je osnovni objekat DOM stabla i predstavlja konkretan čvor(tag).

• Objekat klase XmlNode može predstavljati:

– ceo xml document – npr. dokument Univerzitet.xml

– samo jedan čvor – <naziv> FON</naziv>

– gde se čvor može sastojati i od drugih čvorova:

– a takoñe i XML atribut – <univerzitet tip=”državni”>gde je tip atribut čvora univerzitet.

Page 19: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера• Izvedene klase:

– XmlDocument – XmlDocumentFragment – XmlAttribute – XmlEntity – XmlLinkedNode – XmlNotation – XmlNotation

• XmlNode klasa pruža skup metoda i svojstava pomoću kojihse može uzeti ceo čvor, kao i informacije koje taj čvor sadrži(npr. tekst).

Page 20: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера•• Attributes {get;}Attributes {get;} vraća sve atribute koji pripadaju tekućem čvoru. Atributi

su smešteni u klasu - kolekciju: XmlAttributeCollection.

•• ChildNodesChildNodes {get;}{get;} vraća sve čvorove koji se nalaze unutar tekućeg čvora. Čvorovi su smešteni u klasu – kolekciju: XmlNodeList.

•• NodeTypeNodeType {get;}{get;} enumeracija tipa XmlNodeType koja ukazuje na to kogje tipa čvor u XML dokumentu.je tipa čvor u XML dokumentu.

– (Attribute , Document , Element, Text, XmlDeclaration .... )

•• InnerTextInnerText vraća string koji predstavlja tekst koji se nalazi unutar tekućegčvora.

•• InnerXmlInnerXml vraća string koji predstavlja XML čvorove koji se nalaze unutartekućeg čvora.

•• OuterXmlOuterXml vraća string koji predstavlja tekući čvor sa svim svojimpodčvorovima kao XML element.

Page 21: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера•• AppendChildAppendChild (XmlNode node)

– u tekući čvor ubacuje novi kao poslednji.

•• PrependChildPrependChild (XmlNode node) – u tekući čvor ubacuje novi kao prvi.

•• InsertAfterInsertAfter (XmlNode newNode, XmlNode refNode)

•• InsertBeforeInsertBefore (XmlNode newNode, XmlNode refNode)

•• RemoveChildRemoveChild (XmlNode oldChild)

•• RemoveAllRemoveAll ()

INDEXER: INDEXER: •• [string name][string name] vraća čvor koji se nalazi unutar tekućeg čvora sa nazivom

“name” kao objekat klase XmlNode.

Page 22: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

• XmlDocument objekat predstavlja konkretan XML dokument isadrži sve informacije o njemu.

• Sam dokument se posmatra kao jedan čvor koji predstavljavrh stabla i sadrži sve ostale čvorove uključujući i čvor kojivrh stabla i sadrži sve ostale čvorove uključujući i čvor kojipredstavlja koreni element dokumenta, koji dalje sadrži svečvorove u dokumentu: elemente, atribute.

Page 23: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсераPOLJA (SVOJSTVA):POLJA (SVOJSTVA):•• DocumentElementDocumentElement {get;} {get;}

– vraća root element XML dokumenta.

•• XmlDocumentXmlDocument klasa obezbedjuje metode za manipulaciju dokumentom ucelini kao što su:– učitavanje postojećeg dokumenta u memoriju,– učitavanje postojećeg dokumenta u memoriju,– čuvanje XML-a u datoteku– pregled i manipulaciju svih čvorova u dokumentu.

• Nisu prikazana ona polja i metode koje se nasleñuju od klase XmlNode.

Page 24: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера•• CreateAttributeCreateAttribute (string name)

– pravi objekat tipa XmlAttribute sa nazivom name.

•• CreateElementCreateElement (string name) – pravi objekat tipa XmlElement sa nazivom name.– Klasa XmlElement je izvedena iz klase XmlLinkedNode, koja je

izvedena iz klase XmlNode.

•• GetElementsByTagNameGetElementsByTagName (string name) – vraća sve tagove koji se zovu “name” a pripadaju tekućem čvoru.

•• LoadLoad (string filename) – učitava XML dokument sa lokacije filename.

•• SaveSave(string filename) – snima promene nastale u memoriji u XML dokument na lokaciji

filename.

Page 25: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

• Kada postoji referenca na dokument moguće je kretanje po hijerarhiji.

• Preko XmlDocumentXmlDocument objekta može se pristupiti ChildNodesChildNodessvojstvu, koji pruža mogućnost pristupa svim čvorovima usvojstvu, koji pruža mogućnost pristupa svim čvorovima udokumentu, sa vrha na dole.– Čvorovi se pojavljuju u istom redosledu u kome su se

nalazili u XML datoteci.

•• ChildNodesChildNodes svojstvo imaju i svi ostali čvorovi u hijerarhiji.

Page 26: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

• Predstavlja ureñenu listu objekata tipa XmlNode

POLJA (SVOJSTVA):POLJA (SVOJSTVA):•• CountCount

– broj članova liste.– broj članova liste.

METODE:METODE:•• ItemItem (int index)

– vraća objekat tipa XmlNode koji nalazi na rednom mestuindex u listi.

Page 27: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера•• XmlAttributeXmlAttribute objekat predstavlja atribut.

– Jedna od karakteristika DOM-a je način na koji se tretirajuatributi.

– Atributi nisu čvorovi, deca elementa, već se smatraju svojstvomelementa i sastoje se od imena i vrednosti.

•• XmlAttributeCollectionXmlAttributeCollection klasa sadrži sve atribute odredjenog•• XmlAttributeCollectionXmlAttributeCollection klasa sadrži sve atribute odredjenogelementa. – Svaki član ove kolekcije predstavlja XmlAttribute objekat.

POLJA (SVOJSTVA):POLJA (SVOJSTVA):•• CountCount

– broj elemenata u listi.

Page 28: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера•• AppendAppend (XmlAttribute node )

– ubacuje atribut u kolekciju kao poslednji poslednji.

•• PrependPrepend (XmlAttribute node )– ubacuje atribut u u kolekciju kao prvi.

•• InsertAfterInsertAfter (XmlAttribute newNode, XmlAttribute refNode)

•• InsertBeforeInsertBefore (XmlAttribute newNode, XmlAttribute refNode)•• InsertBeforeInsertBefore (XmlAttribute newNode, XmlAttribute refNode)

•• ItemItem (int index) – vraća XML atribut koji se nalazi na rednom mestu index u kolekciji.

•• RemoveRemove (XmlAttribute node)

•• RemoveAtRemoveAt (int i)

•• RemoveAllRemoveAll ()

•• GetNamedItemGetNamedItem (string name)

Page 29: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера• .NET Framework omogućava i manipulisanje XML šemama pomoću SOM-

a.

• SOM radi sa XML šemama na sličan način kao što DOM radi sakonkretnim XML dokumentima.

• Sastoji se od velikog skupa klasa koje se nalaze u SystemSystem ..XmlXml..SchemaSchemanamespace-u.

• Ove klase korespondiraju osnovnim elementima XML šeme koji supropisani od strane W3C-a.– (schema, element, attribute, complexType, simpleType, attributeGroup,

sequence, choice...)

Page 30: Implementacija Modela XML Parsera

12.1 Имплементација изабраних XML модела парсера

Implementacija izabranih XML Implementacija izabranih XML transformacija

Page 31: Implementacija Modela XML Parsera

12.2 Имплементација XSLT трансформације

Implementacija XSLT transformacije

Page 32: Implementacija Modela XML Parsera

12.2 Имплементација XSLT трансформације

XslTransform klasa

•• SystemSystem..XmlXml..XslXsl namespacenamespace

•• transformitransformiššee ulazniulazni XMLXML dokumentdokument korikorišćšćenjemenjemXSLTXSLT stylesheetstylesheet--aaXSLTXSLT stylesheetstylesheet--aa

•• KljučneKljučne metodemetode-- LoadLoad-- TransformTransform

Page 33: Implementacija Modela XML Parsera

12.2 Имплементација XSLT трансформације

XslTransform klasa

// kreiranje XslTransform objekta

XslTransfrom transformacija = new XslTransform;// punjenje stylesheet doc// punjenje stylesheet doc

transformacija.Load(“pozdrav.xsl”);// transformacija

transformacija.Transform(“pozdrav.xml”, “pozdrav.html”);

Page 34: Implementacija Modela XML Parsera

12.2 Имплементација XSLT трансформације

Page 35: Implementacija Modela XML Parsera