我想序列化一个对象,其中一些成员变量的类型为string
,其值为null
。
我使用以下代码:
var writer = new XmlTextWriter(stream, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
var s = new XmlSerializer(typeof(model.GetType()));
s.Serialize(writer, model);
值为null
的字符串不会出现在Xml文件中(这显然是预期的行为),尽管我不希望这样。
如何通过覆盖null
类来使XmlTextWriter
字符串出现在Xml文件中?
答案 0 :(得分:1)
您可以使用:
[XmlElement(IsNullable = true)]
对于您希望在文件上写入的任何成员,即使为null。
答案 1 :(得分:1)
您可以在您的成员上使用此属性:
[XmlElement(IsNullable = true)]
它将在元素上设置一个属性,指定它为null而不是不对其进行序列化。
答案 2 :(得分:0)
我建议克隆ObjektModleTree并用空的String替换“null”字符串。
在新类中继承XmlSerializer并克隆没有“null”字符串的ObjectModelTree。 因此,如果您能够更改ObjektModel,则可以删除自己的Serializer并使用.NET Serializer来完成工作。