重複の可能性:
XMLキャリッジリターンエンコーディング
XmlSerializerを使用してそのようなファイルにシリアル化するいくつかの単純な文字列とint値を持つクラスがあります。(これは文字通り私が使用しているコードです)
XmlSerializer xmlser = new XmlSerializer(typeof(NPC));
using (Stream st = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
xmlser.Serialize(st, npc);
}
それはすべてうまくいきます。シリアル化時に、正しいデータが<Other></Other>
要素内のファイルにあり、ファイルにそのようなデータを入力した場合は、で完了していることを確認しまし\r\n
た。問題はデシリアライズ時に発生します(ここでも、失敗時の「テスト」結果を除いて、文字通り私が使用しているコード)
XmlSerializer xmlser = new XmlSerializer(typeof(NPC));
NPC npc = null;
using (Stream st = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
{
npc = (NPC)xmlser.Deserialize(st);
}
//Testing...
if(!npc.Other.Contains("\r\n"))
{
//this always occurs, even when the <Other></Other> item DOES have CR-LF
}
デシリアライズの直後に、値を持っstring
ていたオブジェクトのプロパティは、それらを単独で\r\n
置き換えます。\n
デシリアライズした後でも、ファイルが適切な要素に反映されていることを確認しました。オブジェクトが削除されていることをテストする前に\r\n
、オブジェクトに対して他に何もしていません。npc
\r
NPCは単純なクラスであり、次のように定義されます。
[Serializable]
public class NPC
{
public int Field1{get; set;}
public string Other {get; set;}
public int Etc... {get; set;}
}
それで; なぜ私のプロパティはデシリアライズ時にそのプロパティからOther
失われるのですか?\r
\r\n