【问题标题】:How to use enums in a xsd如何在 xsd 中使用枚举
【发布时间】:2013-10-17 18:54:30
【问题描述】:

我有一个包含许多文章详细信息的 xml 文件。

到目前为止,我已经创建了 XML 和 XSD - 这是 XSD:

  <xs:simpleType name="ArticleKey">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Key1" />
      <xs:enumeration value="Key2" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="Articles">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Article">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Key" type="ArticleKey" />
              <xs:element name="Title" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我还手动创建了类对象:

public class Article
{
    public ArticleKey Key { get; set; }

    public string Title { get; set; }
}

为了做到这一点,我还必须像这样单独创建枚举“ArticleKey”:

public enum ArticleKey
{
    Key1,
    Key2
}

但是,这显然会导致在 XSD 中维护重复的枚举值并将其作为独立的枚举。

有没有办法将两者联系起来并避免维护问题,或者这很容易?

【问题讨论】:

    标签: c# xml enums xsd


    【解决方案1】:

    如果您分别维护它们,那么我认为您将得到最好的结果。

    但是,作为一种替代方法,您能否从您的 c# 类生成所有 xsd,从而消除所有重复工作。

    您可以使用 xsd.exe 来执行此操作(从您的 VS 安装中)。这个SO question 更全面地涵盖了它。

    【讨论】:

    • 感谢 Jon,但它可能和我目前的解决方案一样笨拙(从维护的角度来看)。
    • 真的吗? - 您只需将 xsd.exe 命令添加到构建后事件并为您生成它们?
    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多