Implementacija Modela XML Parsera

Post on 12-Sep-2014

44 views 6 download

Tags:

Transcript of Implementacija Modela XML Parsera

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

Implementacija izabranih XML modela parseramodela 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

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

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

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

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

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

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

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

XmlTextReader klasa

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

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

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

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

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

XMLDocumentXMLDocument klasaklasa

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

stablastabla

•• IzvedenaIzvedena iziz XmlNodeXmlNode klaseklase

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 ());

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.

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.

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

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.

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.

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.

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.

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.

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.

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.

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.

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)

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

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

Implementacija izabranih XML Implementacija izabranih XML transformacija

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

Implementacija XSLT transformacije

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

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”);

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