Vežbe na času - zadatak 1: XmlWriter - upisivanje XML-a
Čitanje i pisanje XML-a u .NET programima se obično vrši pomoću klasa XmlReader i XmlWriter klasa.
Korišćenje XmlWriter-a za kreiranje XML fajla
XML možte da 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.
Kreiranje objekta XmlWriter:
XmlWriter mojWriterObj = XmlWriter.Create(imeFajla);
Pažnja: Ako navedeni fajl postoji, preko njega će biti upisan novi fajl a stari ća da se izgubi.
Primer: za kreiranje objekta klase XmlWriter sa nazivom xtw, dodeljivanje fajla za koji je navedena puna putanja: "C:\ucenik\Filmovi.xml" :
xtw = XmlWriter.Create(@"C:\ucenik\Filmovi.xml");
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 bi trebalo 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:
xtw.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:
xtw.WriteComment("Ovo je fajl u koji se postavlja ...");rezultat ovoga je sledeća linija:
<!--Ovo je fajl u koji se postavlja ...-->
Koreni ili root element, tj. njegov otvarajući tag:
xtw.WriteStartElement("VideoBiblioteka");
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.
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:
xtw.WriteStartElement("Video");
xtw.WriteString("Prohujalo sa vihorom");
xtw.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.
Ako nema podelemenata ni atributa, može da se upotrebi metoda WriteElementString koja 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:xtw.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.
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:
xtw.WriteStartElement("Trajanje");
xtw.WriteAttributeString("Mera", "Minute");
xtw.WriteString("120");
xtw.WriteEndElement();Rezultujući XML će biti:
<Trajanje Mera="Minute">120</Trajanje>
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:
xtw.WriteEndDocument();
Pozivanjem ove metode se zatvara sve što je ostalo otvoreno. Tek kada su svi elementi zatvoreni treba zatvoriti i vaš XmlWriter objekat pomoću metode Close():
Zatvoriti XmlWriter objekat
xtw.Close();
Zadatak:
Kreirati aplikaciju za kreiranje XML fajla u kojem se čuvaju podaci o video snimcima koje imamo na raspolaganju. Forma treba da izgleda ovako:

( Projekat koji je rađen na času: WindowsFormsApp3.zip )
(a ako nemate verziju VS 2019, ako želite možete preuzeti samo: Form1.cs)