Čitanje i pisanje XML-a u .NET programima se obično vrši pomoću klasa koje su izvedene iz XmlReader i XmlWriter klasa. Ove dve kalse  su apstraktne klase te se stoga koriste klase koje su iz njih izvedene.

XmlTextReader je klasa koju prvu pominjemo i izvedena je iz klase XmlReader. SLično tome, pomenućemo i klasu XmlTextWriter koja je izvedena iz klase XmlWriter.

Klase XmlTextReader i XmlTextWriter se koriste za brz i efikasan način čitanja i pisanja XML-a.

Korišćenje XmlTextWriter-a za kreiranje XML fajla

Korišćenjem objekta klase XmlTextWriter možete da XML upišete u stream, u konzolu ili u fajl.

Proces upisa u fajl: prvo se otvori ili kreira fajl, zatim se upišu podaci u fajl, isprazni tok podataka da bi bili sigurni da je sve upisano, a zatim se zatvori fajl.

Jedan način kreiranja XmlTextWriter objekta:

XmlTextWriter mojWriterObj = new XmlTextWriter(imeFajla, encoding);

Ako se na mesto encoding navede null, podrazumevano je UTF-8, a po želji se može navesti instanca neke od klasa (System.Text.ASCIIEncoding, System.Text.UnicodeEncoding, System.Text.UTF7Encoding, System.Text.UTF8Encoding )

Pažnja: Ako navedeni fajl postoji, preko njega će biti upisan novi fajl a stari ća da se izgubi.

Primer: za kreiranje objekta klase XmlTextWriter sa nazivom mojWriter, dodeljivanje fajla mojWriter.xml koji se nalazi u folderu C:\xmlPodaci, koristiémo sledeí konstruktor:

XmlTextWriter mojWriter = new XmlTextWriter(@"C:\xmlPodaci\mojWriter.xml", null);

Jednom kada je xml fajl kreiran i dodeljen, može se krenuti sa upisom xml-a. Može da se napiše ceo XML ili deo po deo.

Vaš XML fajl treba da ima sledeće elemente:

  • XML deklaracija
  • Komentari
  • Elementi
  • Podelementi
  • Atributi

Kreiranje deklaracije:

Ako treba posati kompletan XML dokument, treba početi sa XML deklaracijom na početku fajla. Za to se koristi metod WriteStartDocument:

mojWriter.WriteStartDocument();

Pozivanjem ovog metoda započinje se novi XML dokument i upisuje sledeći tekst u XML fajl ili u stream:

<?xml version="1.0" encoding="utf-8"?>

Dodavanje komentara:

Iako nisu obavezni, dobra je praksa dodati ih. Za to se koristi metod WriteComment koji kao parametar ima string koji je u komentaru:

mojWriter.WriteComment("Komentar text");

rezultat ovoga je sledeća linija:

<!--Komentar text-->
Upisivanje elemenata i podelemenata

Najvažniji deo XML fajla je deo u kojem su elementi. Osnovni podaci se nalaze u elementima. Elementi mogu da sadrže imena atributa, vrednosti i podelemente. U opštem slučaju, postoje dve tehnike za kreiranje elemenata: može da se odjednom navede element i njegova vrednost, ili može da se započne element, upiše njegov sadržaj i kasnije da se zatvori element.

Metoda WriteElementString se koristi da se ujedno upiše i element i njegova vrednost, tako što se kao prvi parametar navede naziv elementa koji se kreira, a kao drugi parametar se navodi vrednost elementa. Na primer, u sledećem kodu se kreira video element sa vrednošću Prohujalo sa vihorom:

mojWriter.WriteElementString("Video", "Prohujalo sa vihorom");

A kako će to biti upisano u XML fajl - pogledajte u nastavku:

<Video>Prohujalo sa vihorom</Video>

Kao što se iz ovog primera vidi, ovaj metod će da kreira početni tag video, njegov sadržaj, kao i zatvarajući tag. Ako biste želeli da kreirate element sa podelementima ili ako želite da dodate atribute u postojeći element, prvo treba otvoriti element, upisati tagove i ostale podatke, a zatim zatvoriti originalni element. Otvaranje i zatvaranje pojedinačnih elemenata se postiže korišćenjem metoda WriteStart­Element i WriteEndElement.

Metodom WriteStart­Element se kreira otvarajući tag, a kao parametar joj se daje samo naziv elementa. Nakon toga se kreiraju podelementi i drugi podaci. Na kraju treba pozvati metodu WriteEndElement bez parametara za kreiranje zatvarajućeg taga. U sledećem kodu je demonstrirano kako kreirati video element na ovaj način:

mojWriter.WriteStartElement("Video");
mojWriter.WriteString("Prohujalo sa vihorom");
mojWriter.WriteEndElement();

Između otvarajućeg i zatvarajućeg taga mogu da se unesu i podelementi, vrednosti elementa ili dodati atributi. Samo treba ponoviti odgovarajuće korake. Za upisivanje vrednosti elementa ili atributa poziva se metoda WriteString, koja upisuje tekst (string) koji se prosledi kao parametar, i to se onda upisuje direktno u XML fajl.

Dodavanje atributa

Za to se koristi metoda Write­AttributeString. Najjednostavniji način je da se samo navede kao parametar naziv atributa i njegova vrednost. Na primer, element kojim se prikazuje trajanje filma, može da ima atribut kojim se prikazuje kojim jedinicama se vreme iskazuje. Video može da traje 120 minuta ili 2 sata:

mojWriter.WriteStartElement("Trajanje");
mojWriter.WriteAttributeString("Mera", "Minute");
mojWriter.WriteString("120");
mojWriter.WriteEndElement();

Rezultujući XML će biti:

<Trajanje Mera="Minute">120</Trajanje>
(Za veću kontrolu mogu se koristiti i metode Write­StartAttribute i WriteEndAttribute, ali to zasada nećemo raditi )

Formatiranje

Za XML nije neophodno dodavati neke posebne načine formatiranja. Međutim ako se to uradi onda je sve preglednije. Propertiji od XmlTextWroter-a koji se mogu postaviti su:

  • Formatting ( Formating.None (default), ili  Formatting.Indented)
  • Indentation
  • IndentChar
  • QuoteChar

Zatvaranje XML fajla ili streama

Nakon što se upišu elementi, podelementi, atributi i druge vrednosti u vaš XML fajl, potrebno je pozvati metodu za kraj dokumenta WriteEnd­Document:

mojWriter.WriteEndDocument();

Pozivanjem ove metode se zatvara sve što je ostalo otvoreno. Tek kada su svi elementi zatvoreni treba zatvoriti i vaš XmlTextWriter objekat pomoću metode Close:

Zatvoriti XmlTextWriter objekat

mojWriter.Close();

Zadatak:

Kreirati aplikaciju za kreiranje ovog XML fajla. Forma treba da izgleda ovako:

Title, txtTitle, ispod: Length txtLength, ispod Star txtStar, ispod Rating cmbRating, ispod btnAdd i btnExit

(jedno moguće rešenje: Form1.cs)








Poslednja izmena: субота, 22. јануар 2022, 19:08