pátek 10. srpna 2012

C# a tvorba XML s kódováním UTF-8

C# a tvorba XML s kódováním UTF-8

Ačkoli má XmlWriter defaultně nastavené kódování v UTF-8, né vždy je tomu tak. Sám jsem se dostal do situace, kdy mi vracel XML dokument s hlavičkou:

<?xml version="1.0" encoding="utf-16"?>

Dlouho jsem hledal postup, jakým způsobem donutit writer, aby vytvářel dokument v UTF-8. Nakonec jsem našel jeden způsob, který vám nyní ukážu.

public class StringWriterUtf8 : StringWriter
    {
        public StringWriterUtf8(StringBuilder builder)
            : base(builder)
        {
        }

        public override Encoding Encoding
        {
            get { return Encoding.UTF8; }
        }
    }

Díky tomu jsme si vytvořili třídu pro string writer, která bude vždy vracet formátování v UTF-8. Nyní si tedy tuto třídu zavoláme a vytvoříme si XML dokument:


XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        StringBuilder builder = new StringBuilder();
        StringWriterUtf8 sw = new StringWriterUtf8(builder);

        using (XmlWriter w = XmlWriter.Create(sw, settings))
        {
            w.WriteStartDocument();

            //Hlavička XML Dokumentu
            w.WriteStartElement("Merchant-PP3M_POS");

            w.WriteAttributeString("version", "1.00.000");
            w.WriteAttributeString("poradove_cislo", kniha.id);

            w.WriteStartElement("Knihovna");

            w.WriteStartElement("Kniha");
            w.WriteElementString("Titul", kniha.titul);
            w.WriteElementString("Autor", kniha.autorJmeno);
            w.WriteElementString("Vydavatelství", kniha.vydavatel);
            w.WriteEndElement();

         //Ukončíme Knihovna
            w.WriteEndElement();

            //Ukončí XML Dokument
            w.WriteEndElement();
            w.WriteEndDocument();
            w.Flush();
            w.Close();
        }

A to je fonkční řešení tohoto problému.

1 komentář:

  1. Môj príbeh TU JE SKUTOČNÝ A GENUINE. Volám sa Matta Agda Noah Vienna a som tu, aby som vypovedal o Veľkej matke, ktorá mi priviedla späť môjho muža, keď sa so mnou rozišiel kvôli inej žene, ktorú stretol na svojom pracovisku. Great Adeleke je veľmi silná, skutočná a jedinečná žena so zvláštnymi právomocami. Snažil som sa získať pomoc z mnohých miest a zdrojov, aby som priviedol späť môjho muža, ale nič nefungovalo, ale keď som kontaktoval Veľkú Adeleke, prinútila ma znova sa usmiať tým, že priviedla svojho muža späť ku mne so svojimi osobitnými právomocami. Ak máte nejaké problémy v Vaše manželstvo, vzťah a máte s tým podobný problém, obráťte sa na Veľkého doktora Adeleke, ktorý vám teraz pomôže. Tu je jej e-mailová adresa: (aoba5019@gmail.com) a môžete sa s ňou skontaktovať aj na vlastné číslo WhatsApp: (+27740386124) Môžete ju buď kontaktovať na svojom e-maile, alebo na čísle WhatsApp. Ďakujem Veľký Adeleke.

    OdpovědětVymazat