TOC

This article has been localized into Czech by the community.

XML:

Zápis XML s třídou XmlWriter

V předchozích kapitolách jsme se zabývali čtením XML, ale nyní je čas začít ho také psát. Jelikož je XML pouze text, mohli byste jednoduše začít zapisovat XML tagy do souboru a dát mu xml příponu, ale je jednodušší a bezpečnější nechat to na .NET frameworku, a stejně jako u čtení XML, existují alespoň dvě různé možnosti: Přístup XmlWriter a přístup XmlDocument. Tento článek se zaměří na první přístup a poté se podíváme na psaní XML s XmlDocument v další kapitole.

Rozdíl mezi oběma je opět většinou spojen se spotřebou paměti - XmlWriter používá méně paměti než XmlDocument, což je problém pouze v případě, že píšete velmi velké soubory. Dalším důležitým rozdílem je, že při použití XmlDocument můžete číst existující soubor, manipulovat s ním a poté zapsat zpět změny. S XmlWriterem budete muset psát celý dokument od začátku pokaždé. To však nutně není problém, takže jako vždy to opravdu závisí na vaší situaci a také na vašich osobních preferencích.

Zde je příklad psaní XML pomocí třídy XmlWriter:

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("users");

            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "42");
            xmlWriter.WriteString("John Doe");
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "39");
            xmlWriter.WriteString("Jane Doe");

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

Výše uvedený kód vytvoří následující XML:

<users>
  <user age="42">John Doe</user>
  <user age="39">Jane Doe</user>
</users>

Začneme tedy vytvořením instance třídy XmlWriter. Vyžaduje alespoň jeden parametr, v tomto případě cestu, kam má být XML zapsáno, ale existuje mnoho variant pro různé účely. První, co bychom měli udělat, je zavolat metodu WriteStartDocument(). Poté napíšeme startovací element s názvem "users". XmlWriter to přeloží do <users>. Před jeho uzavřením napíšeme další startovací element, "user", který se pak stane dítětem "users". Poté pokračujeme v přidávání atributu (věk) k elementu pomocí metody WriteAttributeString() a poté napíšeme vnitřní text elementu voláním metody WriteString(). Pak se ujistíme, že první element "user" uzavřeme voláním metody WriteEndElement().

Tento proces se opakuje pro přidání dalšího uživatele, s výjimkou toho, že nevoláme WriteEndElement() jako předtím. Ve skutečnosti by mělo být voláno dvakrát, protože máme také otevřený element "users", ale XmlWriter to pro nás udělá, když zavoláme metodu WriteEndDocument().

Aby XmlWriter zapsal naše data na disk, zavoláme metodu Close(). Nyní můžete otevřít soubor "test.xml" ve stejném adresáři, kde se nachází EXE soubor vašeho projektu, obvykle v adresáři bin\debug.

A to je opravdu vše, co je potřeba k zapsání jednoduchého XML souboru. V další kapitole to uděláme stejně, ale použijeme třídu XmlDocument.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!