XmlTextWriter和空字符串

时间:2011-09-28 09:12:35

标签: c# xml xml-serialization

我想序列化一个对象,其中一些成员变量的类型为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文件中?

编辑:我无法修改需要序列化的对象模型,因此无法选择Xml属性。

3 个答案:

答案 0 :(得分:1)

您可以使用:

[XmlElement(IsNullable = true)]

对于您希望在文件上写入的任何成员,即使为null。

答案 1 :(得分:1)

您可以在您的成员上使用此属性:

[XmlElement(IsNullable = true)]

它将在元素上设置一个属性,指定它为null而不是不对其进行序列化。

答案 2 :(得分:0)

我建议克隆ObjektModleTree并用空的String替换“null”字符串。

在新类中继承XmlSerializer并克隆没有“null”字符串的ObjectModelTree。 因此,如果您能够更改ObjektModel,则可以删除自己的Serializer并使用.NET Serializer来完成工作。