XMLシリアライザを使用すると奇妙な問題が発生します。 シリアル化されたオブジェクトグラフにForm-Feed(0x0C)を含む文字列が含まれている場合、シリアライザは正しくシリアライズできますが、シリアライズされた表現を逆シリアル化できません。XmlSerializerは、同じシリアライザでシリアル化されたXMLを逆シリアル化できません。
ここがコンセプトの証明です:
static void Main (string[] args)
{
var original = "test\fbla";
var stringBuilder = new StringBuilder();
using (var writer = new StringWriter (stringBuilder))
{
new XmlSerializer (typeof (string)).Serialize (writer, original);
}
var serialized = stringBuilder.ToString();
string deserialized;
using (var reader = new StringReader (serialized))
{
deserialized = (string) new XmlSerializer (typeof (string)).Deserialize (reader);
}
Console.WriteLine (deserialized);
}
シリアライズされた文字列は次のとおりです。
<?xml version="1.0" encoding="utf-16"?>
<string>testbla</string>
Deserialize
への呼び出しが失敗しました。 これはXmlSerializer
のバグであると思われます。これは、シリアライズされた文字列がうまく構成されているようだからです。または私は何か間違っているのですか?
ちょうど確認、それはフォームフィードなしで動作しますか? – Christoph
'Deserialize'の失敗に関する追加情報を提供できますか? –