【问题标题】:Serialize all properties of class to XML将类的所有属性序列化为 XML
【发布时间】:2010-01-19 13:38:13
【问题描述】:

我有很多类,我需要为这些类生成一个 XML 模式。

我能想到的最简单的方法是创建类,序列化为 XML,然后在这个 XML 上运行 XSD。

但是,如果我不设置类的属性,则不会创建 XML 节点,因此 XSD 不会拾取它。

我有没有办法告诉 XML 序列化器序列化一个类的所有属性,而不仅仅是那些设置了值的属性?

充满希望,超出预期! 邓肯

【问题讨论】:

    标签: .net xml xml-serialization


    【解决方案1】:

    XSD.EXE 可以从程序集生成架构。只需指定/type 开关即可。

    【讨论】:

    • 谢谢,提醒大家您需要提供完全限定的命名空间,如下所示:xsd Assembly.dll /type:namespace.* /outputdir:C:\temp
    【解决方案2】:

    使用元数据属性

    [XmlElement(IsNullable=true)]
    

    但是,如果字段为空,它将向序列化输出添加额外的属性 xsi:nil="true"。

    【讨论】:

      【解决方案3】:

      当然。实施IXmlSerializable,您就拥有完全的控制权。

      另外,我相信您已经知道有几种不同的方法来解析/验证 Xml……而且由于您在 Microsoft 平台上……如果您使用这些工具(在 MSDN 上提供)会派上用场(自动生成 C# 代码)决定对架构进行序列化/反序列化:xsd.exe 和 xsdObjectGen.exe(更多选项)。

      【讨论】:

      • 谢谢,我忘记了。我还想知道是否有一个魔术属性可以附加到我的类上,它可以在我不需要实现这个接口的情况下完成上述操作?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      相关资源
      最近更新 更多