【发布时间】:2010-01-19 13:38:13
【问题描述】:
我有很多类,我需要为这些类生成一个 XML 模式。
我能想到的最简单的方法是创建类,序列化为 XML,然后在这个 XML 上运行 XSD。
但是,如果我不设置类的属性,则不会创建 XML 节点,因此 XSD 不会拾取它。
我有没有办法告诉 XML 序列化器序列化一个类的所有属性,而不仅仅是那些设置了值的属性?
充满希望,超出预期! 邓肯
【问题讨论】:
标签: .net xml xml-serialization
我有很多类,我需要为这些类生成一个 XML 模式。
我能想到的最简单的方法是创建类,序列化为 XML,然后在这个 XML 上运行 XSD。
但是,如果我不设置类的属性,则不会创建 XML 节点,因此 XSD 不会拾取它。
我有没有办法告诉 XML 序列化器序列化一个类的所有属性,而不仅仅是那些设置了值的属性?
充满希望,超出预期! 邓肯
【问题讨论】:
标签: .net xml xml-serialization
XSD.EXE 可以从程序集生成架构。只需指定/type 开关即可。
【讨论】:
使用元数据属性
[XmlElement(IsNullable=true)]
但是,如果字段为空,它将向序列化输出添加额外的属性 xsi:nil="true"。
【讨论】:
当然。实施IXmlSerializable,您就拥有完全的控制权。
另外,我相信您已经知道有几种不同的方法来解析/验证 Xml……而且由于您在 Microsoft 平台上……如果您使用这些工具(在 MSDN 上提供)会派上用场(自动生成 C# 代码)决定对架构进行序列化/反序列化:xsd.exe 和 xsdObjectGen.exe(更多选项)。
【讨论】: