【问题标题】:How can I generate an XSD from existing classes where a List data type gets minoccurs="1"如何从 List 数据类型获取 minoccurs="1" 的现有类生成 XSD
【发布时间】:2013-11-24 18:42:21
【问题描述】:

我正在使用许多类来通过 xsd.exe 生成 xsd 架构定义。自然,所有List 数据类型都会获得minOccurs="0" maxOccurs="unbounded" 属性,因为这正是Lists 所代表的。

但是,在一种特殊情况下,我在代码中的列表中强制执行至少一个元素。我希望自动生成的 xsd 使用 minOccurs="1" 反映该设计,因为相应的 XML 文件是手动创建的,并且忘记列表中所需的最小元素会导致应用程序出现异常。

是否有任何属性可以附加到我的属性以手动覆盖由 xsd.exe 创建的次要事件?如果没有,是否有其他方法可以在不对已完成的 xsd 文件进行后处理的情况下更改值?

谢谢。

【问题讨论】:

  • 只是为了澄清而不使问题更加臃肿:XML 文件是手动创建和维护的,我希望编辑器在编辑 XML 文件时强制执行小事件。在我的应用程序中解析 XML 后发现这个容易预防的错误为时已晚。

标签: c# xsd.exe


【解决方案1】:

使用 XmlArray 属性(如 Lichtblitz 所述)和 IsNullable=true

另见

http://msdn.microsoft.com/en-us/library/zds0b35c%28v=vs.80%29.aspx

【讨论】:

  • 我之前试过这个,但没有得到预期的结果(因为它不是单个元素,而是元素的List)。但是,您提供的文章给出了答案。您需要使用XmlArray 属性和IsNullable=true。如果您更改答案并且没有人首先得到它,我会接受它。 :-) 谢谢
猜你喜欢
  • 2019-12-27
  • 1970-01-01
  • 2013-11-27
  • 2012-07-12
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
相关资源
最近更新 更多