我正在使用XmlSerializer。它可以很好地序列化对象,但客户端要求所需的空元素为<star:Confirm/>
。序列化器将空元素序列化为<star:Confirm></star:Confirm>
是否有方法将其更改为序列化客户端所需的方式。更改XmlSerializer如何序列化空元素
3
A
回答
7
尝试不同的事情后,我意外地发生了解决方案。我将XmlElementAttribute.IsNullable
设置为正确,就像之前提出的答案。
[System.Xml.Serialization.XmlElementAttribute(ElementName = "Confirm", IsNullable=true)]
public ConfirmType Confirm
{
get
{
return this.confirmField;
}
set
{
this.confirmField = value;
this.RaisePropertyChanged("Confirm");
}
}
然后,当在代码中设置确认类型时,我使用默认构造函数而不是将Confirm设置为null。
retval.ConfirmBODDataArea.Confirm = new ConfirmType();
此序列化为<star:Confirm/>
3
您可以尝试将XmlElementAttribute.IsNullable
属性设置为true
。但是,请记住xsi:nil="true"
属性将作为结果输出。
相关问题
- 1. XmlSerializer。空日期和时间元素的反序列化
- 2. XmlSerializer反序列化空元素的属性
- 3. 带有不同元素名称的XmlSerializer反序列化列表
- 4. 将空元素反序列化为空
- 5. XmlSerializer:如何捕获每个反序列化元素的文件/行/列信息?
- 6. 使用XmlSerializer反序列化XML响应时缺失根元素
- 7. 使用XmlSerializer反序列化选择的复杂类型元素
- 8. XmlSerializer - 将不同元素反序列化为同一元素的集合
- 9. 的XmlSerializer:序列化元素的数组不同的元素名称字符串
- 10. 的Xml反序列化的空元素
- 11. XML序列化 - 渲染空元素
- 12. 更改XML序列化程序的数组元素的名称
- 13. 使用XmlSerializer序列化IntPtr
- 14. XmlSerializer不会序列化IEnumerable
- 15. XMLSerializer未序列化DateTime
- 16. XmlSerializer和xsi:反序列化
- 17. 使用XmlSerializer序列化ArrayList
- 18. 如果找不到元素,我能否使用C#中的XmlSerializer反序列化?
- 19. Hgroup - 如何更改元素的顺序?
- 20. jQuery的:后更改元素值序列化
- 21. XmlSerializer非名称空间反序列化列表
- 22. 如何更改DOM元素?
- 23. 如何更改CKEditor元素
- 24. XMLSerializer不写入列表中的元素
- 25. XmlSerializer的列表项元素名称
- 26. 如何更改序列化对象?
- 27. 如何更改Flexbox列中元素的顺序?
- 28. 反序列化XML元素
- 29. XML序列化父元素
- 30. 更改元素的顺序
谢谢你提醒我关于默认值,我应该使用默认的构造函数,而不是在vb.net代码=什么也没有! :) – 2016-11-02 13:49:36