XMLの一部を作成しようとしています。私はxsd.exeでデータスクラップを作成しました。 ルートクラスはMESSAGE
です。XmlTextWriterのシリアル化の問題
のでMESSAGE
を作成し、そのすべてのプロパティを充填した後、私はこのようにそれをシリアル化:これまでは
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
StringWriter sw = new StringWriter();
serializer.Serialize(sw, response);
string xml = sw.ToString();
すべてがうまくいく、文字列のXMLが有効(UTF-16でエンコード)は、XMLが含まれています。 は今、私の代わりにUTF-8エンコーディングでXMLを作成したいので、私はこのようにそれを実行します。
編集:ストリームの宣言を含めるのを忘れて
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
using (MemoryStream stream = new MemoryStream())
{
XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(xtw, response);
string xml = Encoding.UTF8.GetString(stream.ToArray());
}
そしてここでは、問題が来ます:この方法を使用すると、xml文字列の前に無効なchar(悪名高い正方形)が追加されます。
私はこのような文字を検査する場合:
char c = xml[0];
を私はCが65279
誰の価値を持って見ることができるが、これはから来ているの手掛かりを持っていますか?
私は簡単に最初の文字を遮断することでこの問題を解決することができます
xml = xml.SubString(1);
しかし、私はむしろ盲目的に最初の文字の切断よりも、何が起こっているのかを知っていると思います。
誰もがこれにいくつかの光を当てることができますか?ありがとう!
を参照してください:http://stackoverflow.com/questions/955611/xmlwriter-to-write-to-a -string-to-a-file/955698#955698 –