C# XmlTextWriter和空字符串

C# XmlTextWriter和空字符串,c#,xml,xml-serialization,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

我想序列化一个对象,其中一些成员变量的类型为
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文件中(这显然是预期的行为),尽管我不希望这样。 如何通过重写
XmlTextWriter
类使
null
字符串出现在Xml文件中

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

您可以使用:

[XmlElement(IsNullable = true)]
在任何要写入文件的成员上,即使为空。

您可以使用:

[XmlElement(IsNullable = true)]

在任何要写入文件的成员上,即使为空。

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

[XmlElement(IsNullable = true)]

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

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

[XmlElement(IsNullable = true)]

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

我建议克隆ObjektModleTree并将“null”字符串替换为空字符串

在新类中继承XmlSerializer并克隆ObjectModelTree,但不包含“null”字符串。
因此,如果您能够更改ObjeTModel,您可以删除自己的序列化程序并使用.NET序列化程序来完成此工作。

我建议克隆ObjeTModletree并用空字符串替换“null”字符串

在新类中继承XmlSerializer并克隆ObjectModelTree,但不包含“null”字符串。
因此,如果您能够更改ObjeTModel,您可以删除自己的序列化程序,并使用.NET序列化程序来完成这项工作。

谢谢您的回答。我无法修改对象模型,因此无法使用此解决方案。我已编辑了我的问题以包含此约束。@x0r:在对象集合上循环并用字符串替换空项。空项不是解决方案,对吗?它将是解决方案!虽然它不是对象的集合,但更多的是对象的树。因此,您需要使用反射遍历树,遍历所有成员变量并设置这些
null
字符串。谢谢您的回答。我无法修改对象模型,因此无法使用此解决方案。我已编辑了我的问题以包含此约束。@x0r:在对象集合上循环并用字符串替换空项。空项不是解决方案,对吗?它将是解决方案!虽然它不是对象的集合,但更多的是对象的树。因此,您需要使用反射遍历树,遍历所有成员变量并设置这些
null
字符串。