NetDataContractSerializer
シリアライゼーション/デシリアライゼーションに使用しています。Employee オブジェクトを含む辞書をシリアル化しました
今、私は従業員オブジェクトを変更し、ブール値フィールド IsManager を含めました。
しかし、xml のデシリアライズ中に以下のエラーが発生します。
行 1 の位置 1676 にエラーがあります。名前空間 ' http://schemas.datacontract.org/2004/07/ ..'からの 'Element' ' x003C ....' は想定されていません。要素 ' x003C ....' が必要です。
[DataMember(IsRequired = false)]
IsManager フィールドの属性と同様に試しまし[XmlElement(IsNullable=true)]
たが、問題は解決しませんでした。
従業員クラス
public Class Employee
{
public string FirstName{get;set;}
public string LastName{get;set;}
public bool IsManager{get;set;}
}
Employee クラスはディクショナリでシリアル化され、ディクショナリ (xml) から読み取られます。以下のコードを使用しています。
internal static IDictionary<TKey, TValue> DeserializeData<TKey, TValue>(string xml) where TValue : class
{
if (xml == null || xml.Equals(string.Empty))
{
return null;
}
IDictionary<TKey, TValue> dictionary = null;
var deserializer = new NetDataContractSerializer
{
AssemblyFormat = FormatterAssemblyStyle.Simple
};
var sr = new StringReader(xml);
using (XmlReader reader = XmlReader.Create(sr))
{
try
{
dictionary = deserializer.ReadObject(reader) as IDictionary<TKey, TValue>;
}
catch (Exception e)
{
Trace.WriteLine(
string.Format(
CultureInfo.InvariantCulture, "Exception during de-serialization of data: {0}", e.Message));
}
}
return dictionary;
}