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
字符串。