XML író
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk. A példány metódusain keresztül írhatunk ki elemeket, attribútumokat, megjegyzéseket az XML fájlba.
Pl.:
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
Mint látszik, az XmlTextWriter konstruktorának kell az XML fájl neve, és a kódlap információ. A Default kódlap a Windows alapértelmezett kódlapja. Ez kiváló nekünk, ha esetleg egyéb editorokkal is kívánjuk az XML fájlt módosítani, pl. jegyzettömb.
XML formázása
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
Pl.:
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
A w példányon keresztül bizonyos formázási beállításokat is alkalmazhatunk. Ezek közül a legérdekesebb a
w.Formatting = Formatting.Indented;
beállítás. Ennek hiányában a teljes XML fájl egyetlen sorba kerül, tördelés nélkül. Ez nem zavarja az XML feldolgozó programokat, de ha mi akarjuk olvasni az XML fájlt valamilyen editoron keresztül, akkor nagyon nehéz eligazodni benne.
Az Indented formázás mellett mentett dokumentumban a beágyazott elemeket új sorban, kicsit beljebb kezdve írja ki, így maximális az áttekinthetőség.
Dokumentum kezdése
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy több egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
Az első lépés az XML dokumentum írása kapcsán a dokumentum első bejegyzésének kiírása. Ez a sor tartalmazza a használt XML szabvány verziószámát, és a kódlap leírását:
w.WriteStartDocument();
Ennek hatására az alábbi sor kerül be az XML fájlba:
<?xml version="1.0" encoding="windows-1250"?>
Elem kiírása egy lépésben
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
Amennyiben egy egyszerű elemet kívánunk kiírni, amelyikbe nincs beágyazott további elem, sem attribútum, úgy legegyszerűbben az WriteElementString() segítségével tudjuk megtenni.
Meg kell adni a kiírandó elem nevét és tartalmát:
w.WriteElementString(”dolgozo”,”Buga Jakab”);
Ennek hatására az alábbi íródik ki az XML fájlba:
<dolgozo>Buga Jakab</dolgozo>
Amennyiben az érték üres lenne, úgy azt is helyesen írja ki a rendszer:
w.WriteElementString(”dolgozo”,””);
hatására
<dolgozo />
íródik ki.
Elem írásának elkezdése
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
Amennyiben egy olyan elemet kívánunk kiírni, amelybe további elemek vannak beágyazva, vagy attribútumokat tartalmaz, az elem kiírását el kell kezdeni, majd a lezárásáig folyamatosan írni a tartalmát (attribútumok, beágyazott elemek, megjegyzések, stb.).
w.WriteStartElement(”dolgozo”);
...
... elem tartalmának kiírása ...
...
Ennek hatására az alábbi íródik ki:
<dolgozo>
... ide kerül a beágyazott tartalom ...
Attribútum írása
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
Amennyiben attribútumot kívánunk írni egy elemhez, úgy ki kell írni az elem kezdő tagját, majd a megfelelő mennyiségű attribútumot:
w.WriteStartElement(”dolgozo”);
w.WriteAttributeString (”nev”,”Buga Jakab”);
...
... elem egyéb tartalmának kiírása ...
...
w.WriteEndElement();
Ennek hatására az alábbi íródik ki:
<dolgozo nev=”buga jakab”>
... ide kerül a tartalom ...
</dolgozo>
Elem az elemben
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
Amennyiben olyan elemet kívánunk írni, amelyik valamelyik másik elembe van beágyazva, úgy ki kell írni az elem kezdő tagját, majd a tartalmazott elemet:
w.WriteStartElement(”dolgozo”);
w.WriteElementString(”nev”,”Buga Jakab”);...
... elem egyéb tartalmának kiírása ...
...
w.WriteEndElement();
Ennek hatására az alábbi íródik ki:
<dolgozo>
<nev>Buga Jakab</nev>
... ide kerül az egyéb tartalom ...
</dolgozo>
Elem írásának befejezése
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
Amennyiben egy olyan elemet kívánunk kiírni, amelybe további elemek vannak beágyazva, vagy attribútumokat tartalmaz, az elem kiírását két lépésre kell bontani. Ki kell írni az elem kezdő tagját, a tartalmát, majd az elem záró tagját:
w.WriteStartElement(”dolgozo”);
...
... elem tartalmának kiírása ...
...
w.WriteEndElement();
A záró tag kiírásánál nem kell még egyszer megadni az elem nevét, azt automatikusan írja a rendszer ’emlékezetből’.
Ennek hatására az alábbi íródik ki:
<dolgozo>
... ide kerül a tartalom ...
</dolgozo>
Dokumentum befejezése
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
... a tartalom kírása ...
w.WriteEndDocument();
Az XML fájl utolsó kiírása a dokumentumot lezáró rész kiírása kell, hogy legyen: WriteEndDocument(). Ez általában nem ír ki semmit. De ha folyamatban lenne még lezáratlan elem, attribútum, akkor azokat automatikusan lezárná. Tehát használata célszerű!
Írás lezárása
Amennyiben C# kódból kívánunk XML fájlt létrehozni (írni), úgy egy XmlTextWriter példányra lesz szükségünk.
XmlTextWriter w = new XmlTextWriter("c:\\adatok.xml", Encoding.Default);
w.Formatting = Formatting.Indented;
w.WriteStartDocument();
... a tartalom kírása ...
w.WriteEndDocument();
w.Close();
Az XML fájl írását le kell zárni - mint minden fájlba írást - a Close() metódus meghívásával.