Č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 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:

    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 WriteStart­Element 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 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:

xtw.WriteStartElement("Trajanje");
xtw.WriteAttributeString("Mera", "Minute");
xtw.WriteString("120");
xtw.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 )

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:

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:

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

( Projekat koji je rađen na času: WindowsFormsApp3.zip )

(a ako nemate verziju VS 2019, ako želite možete preuzeti samo: Form1.cs)

Last modified: Saturday, 22 January 2022, 6:58 PM