IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:3.5.2014 11:17

Ahoj, nevím proč a ani po X minutách na Google nemůžu příjít na to jak donutit StringWriter aby mi neměnil deklaraci u XML. Pomocí XmlDocument si vytvořím XML a jen v programu s ním chci dál pokračovat. Nikam ho nechci ukládat. Proto si ho přečtu pomocí StringWriteru a uložím do StrinBuilderu.

Problém je že StringWriter vnitřně funguje s UTF-16 a nevím jak ho donutit přepnout se na UTF-8. Jediná možnost je podědit StringWriter a natvrdo mu nastavit property Encoding na UTF-8. Stejně si s tím neporadí ani XmlWriter

Nějaká rada ? :) Díky

XmlDocument doc = new XmlDocument();
          XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);
          doc.AppendChild(declaration);
          XmlElement root = doc.CreateElement(table);

          foreach (KeyValuePair<string,object> u in values)
          {
              XmlElement node = doc.CreateElement(u.Key);
              node.InnerText = u.Value.ToString();
              root.AppendChild(node);
          }

          doc.AppendChild(root);
          StringBuilder sb = new StringBuilder();
          using(XmlWriter writer = XmlWriter.Create(sb))
          {
              doc.Save(writer);
          }
Odpovědět
3.5.2014 11:17
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:3.5.2014 11:27

Tak opět jednodušší než se zdálo. Místo zkoušení vnutit StringWriteru jiné kódování stačí šáhnout po property XmlDocumentu - OuterXml. To vám vrátí přesně to XML které jste si nadeklarovali.

Nahoru Odpovědět
3.5.2014 11:27
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek - misaz:3.5.2014 11:27

nejsem si jistý, ale mám pocit že by to mělo jít ukládat i úplně bez builderu. Místo builderu bych mu předal stream IO.StreamWriter.

 
Nahoru Odpovědět
3.5.2014 11:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.