2013-10-17 66 views
3

我有一個xml文件,其中將包含一些文章的詳細信息。如何在xsd中使用枚舉

到目前爲止,我已經創建的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中作爲重複的枚舉值,並作爲獨立的枚舉。

有沒有辦法將兩者聯繫起來,避免維護問題,還是這樣容易?

回答

1

如果您要單獨維護它們,那麼我認爲這樣做會很好。

然而,作爲一種替代方法,您是否可以從您的c#類中生成所有xsd,從而消除所有重複的工作。

您可以使用xsd.exe來執行此操作(從您的VS安裝)。這SO question涵蓋它更全面。

+0

感謝那個Jon,但是它可能就像我現在的解決方案一樣笨重(從維護的角度來看)。 – dotnetnoob

+0

真的嗎? - 您只需將xsd.exe命令添加到後期構建事件中並讓它們爲您生成? –