9

クラスを正しく定義しましたが、それを XML にシリアライズした後、エンコーディングが得られません。

エンコーディング「ISO-8859-1」を定義するにはどうすればよいですか?

これがサンプルコードです

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

生成された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>
4

2 に答える 2

23

以下が機能するはずです。

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);
}

よろしければISO-8859-1、特にエンコーディングが必要な理由を教えてください。おそらくUTF-8orを使用UTF-16して(より一般的に認識されます)、それを回避できます。

于 2014-01-08T17:55:49.023 に答える
0

目的のエンコーディングで StreamWriter を作成します。

System.Text.Encoding code = *WhateverYouWant*
StreamWriter sw = new StreamWriter(file, code);
于 2014-01-08T13:37:27.593 に答える