あほxのまとめwiki

.NET

最終更新:

www1

- view
管理者のみ編集可

XmlSerializerの改行の扱いについて

http://yutori7.2ch.net/test/read.cgi/news4vip/1275478577/122
改行がCRLFのStringをXmlSerializer.Serializeでシリアライズして保存すると、ファイルには改行がCRLFのまま保存されるが、読みだす際にStreamReaderを使うかXmlTextReaderを使うかによりXmlSerializer.Deserializeを通した後の改行がLFになるかCRLFになるかが変化するらしい。
ファイルをStreamReaderでXmlSerializer.Deserializeに渡すと改行がLFになる。
ファイルをXmlTextReaderでXmlSerializer.Deserializeに渡すと改行がCRLFになる。
  • LF
using(System.IO.StreamReader stream 
    = new System.IO.StreamReader(filename))
{
    Hoge data = (Hoge)(
        new System.Xml.Serialization.XmlSerializer(typeof(Hoge))
        .Deserialize(stream)
    );
}
  • CRLF
using(System.Xml.XmlTextReader stream
    = new System.Xml.XmlTextReader(filename))
{
    Hoge data = (Hoge)(
        new System.Xml.Serialization.XmlSerializer(typeof(Hoge))
        .Deserialize(stream)
    );
}
テキストボックスにデシリアライズした文字列入れたら改行が…、という場合はSystem.Xml.XmlTextReaderの方を使ってやればよいようだ。

目安箱バナー