it-swarm.dev

Určete kódování XmlSerializer

Mám správně definovanou třídu a po serializaci na XML dostávám žádné kódování.

Jak mohu definovat kódování "ISO-8859-1"?

Zde je ukázkový kód

var xml = new XmlSerializer(typeof(Transacao));
var file = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml"),FileMode.OpenOrCreate);            
xml.Serialize(file, transacao);            
file.Close();

Zde je začátek generování XML

<?xml version="1.0"?>
<requisicao-transacao xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <dados-ec>
    <numero>1048664497</numero>
9
Gandarez

Měly by pracovat následující:

var xml = new XmlSerializer(typeof(Transacao));

var fname = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml");
var appendMode = false;
var encoding = Encoding.GetEncoding("ISO-8859-1");

using(StreamWriter sw = new StreamWriter(fname, appendMode, encoding))
{
    xml.Serialize(sw, transacao);
}

Pokud vám to nevadí, proč potřebujete ISO-8859-1 kódování? Mohli byste pravděpodobně použít UTF-8 nebo UTF-16 (jsou běžně rozpoznatelné) a dostat se z toho.

19
Keeler

Vytvořte StreamWriter s požadovaným kódováním:

System.Text.Encoding code = *WhateverYouWant*
StreamWriter sw = new StreamWriter(file, code);
0
cacau