opciono(Vežba 1: XmlTextWriter)
Č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-->
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 WriteStartElement i WriteEndElement.
Metodom WriteStartElement 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 WriteAttributeString. 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>
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 WriteEndDocument:
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:

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