Otvaranje XML fajla

Prilikom kreiranja objekta klase XmlTextReader, i isto vreme se može otvoriti vaš XML fajl. U sledećem primeru se kreira objekat klase XmlTextReader sa nazivom mojReader i pokazuje na fajl sa nazivom nazivFajla. Naziv fajla u sebi može da sadrži i kompletnu putanju do fajla.

XmlTextReader mojReader = new XmlTextReader("nazivFajla");

(postoje i drugi načini za kreiranje objekta klase XmlTextReader, ali to ne ulazi u okvir ove lekcije)

Čitanje podataka:

Za čitanje podataka iz XML fajla može da se koristi dosta metoda XmlTextReader objekta, od kojih pominjemo samo neke:

Metod

Opis

Read

Čita sledeći čvor unutar XML fajla

ReadAttributeValue

čita vrednost atributa

ReadBase64


ReadBinHex


ReadChars

čita karaktere

ReadElementString

čita samo tekstualne elemente

ReadEndElement

čita završni element

ReadInnerXml

Čita ceo sadržaj iz XML čvora u string

ReadOuterXml

čita i ceo XML čvor i njegov sadržaj u string

ReadStartElement

Čita početni element

ReadString

Čita vrednost element ili tekstualni sadržaj čvora u string


Read metoda je dosta fleksibilna: čita svaki čvor u XML fajlu posebno. Zatim može da se proveri za svaki od njih redom koja su vrsta i šta raditi sa njima. Ova provera može da se izvrši poređenjem vrednosti koja je pročitana iz XmlTextReader objekta sa vrednostima za XmlNodeType. Moguće vrednosti enumeracije za XmlNodeType su u sledećoj tabeli:

Vrednost

Opis

XmlNodeType.Attribute

Atribut

XmlNodeType.CDATA

CDATA deo

XmlNodeType.Comment

XML komentar

XmlNodeType.Document

document node, (koreni čvor)

XmlNodeType.DocumentFragment

document fragment XML-a koji nije povezan sa actualnim documentom

XmlNodeType.DocumentType

document type tag

XmlNodeType.Element

start tag za element

XmlNodeType.EndElement

end tag za element

XmlNodeType.EndEntity

end tag za entity (fizički, XML document se sastoji od delova koji se zovu entiteti)

XmlNodeType.Entity

entitet

XmlNodeType.EntityReference

referenca na entitet

XmlNodeType.None

vraća se kada metoda Read objekta klase XmlTextReader nije pozvana

XmlNodeType.Notation

Oznaka u deklaraciji dokumenta

XmlNodeType.ProcessingInstruction

processing instrukcija u XML fajlu

XmlNodeType.SignificantWhitespace


XmlNodeType.Text

tekstualni sadržaj čvora

XmlNodeType.Whitespace

razmaci između pojedinih delova

XmlNodeType.XmlDeclaration

deklaracija XML dokumenta

U toku čitanja podataka iz objekta klase XmlTextReader, određuje se da li je to važno ili ne za aplikaciju. Kako se koja stavka pročita, pokazivač se uvećeve tako da pokazuje na sledeću stavku. Kao što je već pomenuto, nije moguće vraćanje na prethodnu stavku prilkom korišćenja XmlTextReader-a jer je sa njim čitanje FORWARD ONLY.

Zatvaranje XmlTextReader objekta

Nakon što je pročitan sadržaj fajla, trebalo bi taj fajl i zatvoriti. Za to se koristo metoda Close i sa njom se ujedno i oslobađaju korišćeni resursi:

mojReader.Close();

Zadatak:

Pročitati jedan XML fajl i za to koristiti XmlTextReader. Za svaki čvor prikazati tip čvora, vrednost i naziv čvora. Ako može, prikazati i format podataka (formatiranje)

Ovde ćemo upotrebiti fajl koji je kreiran u prethodnom primeru (C:\ucenik\Videos.xml), a vi možete upotrebiti bilo koju validnu adresu.

Program prolazi kroz XML fajl korišćenjem metode Read. Sa svakim pozivom metode Read, prikazuje se tip čvora, zajedno sa vrednošću i imenom. Aplikacija takođe prikazuje podatke sa formatiranjem.

Evo kako treba da izgleda forma:

slika forme: čvor i txtNode, ispod Vrednost: txtValue, ispod Naziv: txtName, ispod Format:, ispod dugme Sledeći i Izlaz

(Programski kod za Form1.cs)

U ovom programskom kodu se koristi metoda Read da bi se pročitao svaki XML čvor iz fajla. Jednom kada je čvor pročitan, sledećih nekoliko linija se koriste za prenos vrednosti iz čvora na ekran:

txtNode.Text  = xtr.NodeType.ToString();
txtName.Text  = xtr.Name.ToString();
txtValue.Text = xtr.Value.ToString();

Tip čvora se čuva u propertiju NodeType od xtr (naš objekat kalse XmlTextReader). Kada se klikne na taster Sledeći, prikazuje se sledeći čvor. Primetićete da nemaju svi tipovi čvorova i ime i vrednost.

Nakon što su postavljene vrednosti na ekranu, tip čvora u xtr se poredi sa različitim vrstama XmlNodeType pomoću switch sintakse. U tom switch iskazu se formatiraju pročitani XML podaci u zavisnosti od vrste a informacije se prikazuju u dijalogu. Kada se stigne do kraja fajla, vrednosti u dijalog boksu se postavljaju na EOF.




(izvor: Reading and Writing XML - http://etutorials.org/Programming/visual-c-sharp/Part+IV+Data+Access+and+XML/Chapter+19+XML/Reading+and+Writing+XML/ )

Last modified: Saturday, 22 January 2022, 7:08 PM