Baš kao i kod čitanja XML-a, postoji barem dve različite opcije:  XmlWriter i  XmlDocument.

Važna razlika je u tome što kada koristite XmlDocument, možete pročitati postojeću datoteku, manipulirati njome i zatim zapisati izmene. Uz XmlWriter, moraćete svaki put napisati ceo dokument ispočetka. Uz to, XmlWriter koristi manje memorije od XmlDocumenta, što je problem samo ako pišete vrlo velike fajlove.

Primer pisanja XML fajla uz korišćenje XmlWriter-a:

using System;
using System.Text;
using System.Xml;

namespace WritingXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlWriter xmlWriter = XmlWriter.Create("test.xml");

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("korisnici");

            xmlWriter.WriteStartElement("korisnik");
            xmlWriter.WriteAttributeString("starost", "42");
            xmlWriter.WriteString("Ana Marija");
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("korisnik");
            xmlWriter.WriteAttributeString("starost", "39");
            xmlWriter.WriteString("Petar Pan");

            xmlWriter.WriteEndDocument();
            xmlWriter.Close();
        }
    }
}

Ovim programskim kodom će se kreirati sledeći XML:

<korisnici>
  <korisnik starost="42">Ana Marija</korisnik>
  <korisnik starost="39">Petar Pan</korisnik>
</korisnici>
Dakle, počinjemo kreiranjem instance klase XmlWriter. Potreban je barem jedan parametar, u ovom slučaju to je putanja do mesta gde bi XML trebao biti napisan, ali postoje različte opcije za različite svrhe. Prva stvar koju treba da uradimo je da pozovemo metodu WriteStartDocument(). Nakon toga pišemo početni element pod nazivom "korisnici". XmlWriter će ovo prevesti u <korisnici>. Pre nego što ga zatvorimo, pišemo još jedan početni element, "korisnik", koji će tada postati podčvor ( dete) čvora "korisnici". Zatim prelazimo na dodavanje atributa (starost) elementu, koristeći metodu WriteAttributeString(), a zatim pišemo unutrašnji tekst elementa, pozivajući metodu WriteString(). Zatim se pobrinemo da zatvorimo prvi element "korisnik" pozivom metode WriteEndElement().

Ovaj proces se ponavlja za dodavanje još jednog korisnika, osim što ne pozivamo WriteEndElement() kao što smo to radili ranije. U stvari, trebalo bi ga pozvati dvaput, pošto imamo i otvoren element "uskorisnici", ali XmlWriter će to učiniti umesto nas kada pozovemo metodu WriteEndDocument().

Da bismo naveli XmlWriter da zapiše naše podatke na disk, pozivamo metodu Close(). Tek sada možete otvoriti datoteku, "test.xml", u istom direktoriju gde je EXE datoteka vašeg projekta (obično u bin\debug ).

opciono - za one koji žele da znaju više (za bolje učenike):

Pisanje XML-a pomoću XmlDocument:

U nekim situacijama korišćenje klase XmlDocument može dobro doći, naročito ako se vrši izmena postojećeg XML-a. Ipak, trebali biti svestan da je tada potrebno više memorije, uglavnom za velike XML dokumente.

Primer:

using System;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace WritingXml
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
XmlNode rootNode = xmlDoc.CreateElement("korisnici");
xmlDoc.AppendChild(rootNode);

XmlNode userNode = xmlDoc.CreateElement("korisnik");
XmlAttribute attribute = xmlDoc.CreateAttribute("starost");
attribute.Value = "42";
userNode.Attributes.Append(attribute);
userNode.InnerText = "Pera Kojot";
rootNode.AppendChild(userNode);

userNode = xmlDoc.CreateElement("korisnik");
attribute = xmlDoc.CreateAttribute("starost");
attribute.Value = "39";
userNode.Attributes.Append(attribute);
userNode.InnerText = "Sofronije Pevac";
rootNode.AppendChild(userNode);

xmlDoc.Save("test-doc.xml");
}
}
}

Rezultat je sledeći XML:

<korisnici>
<korisnik starost="42">Pera Kojot</korisnik>
<korisnik starost="39">Sofronije Pevac</korisnik>
</korisnici>

Objašnjenje: Instanciramo XmlDocument objekat, koji ćemo koristiti za kreiranje novih elemenata i atributa, koristeći metode CreateElement() i CreateAttribute(). Svaki put kada to učinimo, dodajemo elemente, bilo direktno u dokument, ili u drugi element. U ovom primeru se korenski (root) element ("korisnici") dodaje direktno dokumentu, dok se elementi korisnik dodaju korenskom elementu. Atributi se naravno dodaju elementima gde pripadaju, koristeći metodu Append() na svojstvu Attributes. Ceo XML dokument se upisuje na disk u poslednjem redu, gde koristimo metodu Save().
..

Izvori:

  https://csharp.net-tutorials.com/xml/writing-xml-with-the-xmldocument-class/ .... (ovde možete pogledati i kako da izmenite nešto u postojećem XML fajlu, ko nekoga interesuje)

Poslednja izmena: петак, 21. јануар 2022, 16:59