目前,下面的代码在序列化期间省略了null属性。我希望输出xml中的null值属性为空元素。我在网上搜索但没有找到任何有用的东西。任何帮助将不胜感激。
var serializer = new XmlSerializer(application.GetType());
var ms = new MemoryStream();
var writer = new StreamWriter(ms);
serializer.Serialize(writer, application);
return ms;
抱歉,我忘了提及我想避免属性修饰。
答案 0 :(得分:14)
您能控制必须序列化的项目吗? 使用
[XmlElement(IsNullable = true)]
public string Prop { get; set; }
您可以将其表示为<Prop xsi:nil="true" />
答案 1 :(得分:0)
设置XmlElementAttribute.IsNullable
属性:
答案 2 :(得分:0)
您也可以使用以下代码。模式为ShouldSerialize{PropertyName}
public class PersonWithNullProperties
{
public string Name { get; set; }
public int? Age { get; set; }
public bool ShouldSerializeAge()
{
return true;
}
}
PersonWithNullProperties nullPerson = new PersonWithNullProperties() { Name = "ABCD" };
XmlSerializer xs = new XmlSerializer(typeof(nullPerson));
StringWriter sw = new StringWriter();
xs.Serialize(sw, nullPerson);
XML
<?xml version="1.0" encoding="utf-16"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://
www.w3.org/2001/XMLSchema">
<Name>ABCD</Name>
<Age xsi:nil="true" />
</Person>