2015-12-21 172 views
0

我希望我正確地措詞我的問題。當我們在我們的xsd上運行xsd工具來創建類時,代碼並不完全代表一個部分上的xsd。它是這樣的:XSD工具跳過嵌套級別

XSD: 'BaliseGroups'=>收藏 'BaliseGroup'=>收藏的 '應答器'

代碼: 'BaliseGroups'=>收藏型 '應答器' 名爲 'BaliseGroup' 的。 ..

<xs:element name="BaliseGroups"> 
    <xs:annotation> 
     <xs:documentation>Een verzameling balisegroepen</xs:documentation> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="BaliseGroup" type="tBaliseGroup"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
<xs:complexType name="tBaliseGroup"> 
    <xs:annotation> 
     <xs:documentation>Een balisegroep, </xs:documentation> 
    </xs:annotation> 
    <xs:sequence> 
     <xs:element name="Balise" type="tBalise" minOccurs="1" maxOccurs="8"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:complexType name="tBalise"> 
    <xs:annotation> 
     <xs:documentation>Type voor een balise</xs:documentation> 
    </xs:annotation> 
    <xs:complexContent> 
     <xs:extension base="tTrackAsset"/> 
    </xs:complexContent> 
</xs:complexType> 

代碼

public partial class BaliseGroups 
{ 
    private tBalise[] baliseGroupField; 

    /// <remarks/> 
    [System.Xml.Serialization.XmlArrayItemAttribute("Balise", IsNullable = false)] 
    public tBalise[] BaliseGroup 
    { 
     get 
     { 
      return this.baliseGroupField; 
     } 
     set 
     { 
      this.baliseGroupField = value; 
     } 
    } 
} 

正如你可以在生成的C#代碼塊看到它創建類型的屬性BaliseGroup應答器[]。這應該是tBaliseGroup []類型。

我有一個猜想:有什麼不對的XSD,但我想不出什麼..

+0

BaliseGroups是BaliseGroup類型。 複雜類型BaliseGroup的內容是一個Balise數組。 所以BaliseGroup *包含一個Balise數組,而沒有別的。似乎有理由提供一種方法,從BaliseGroups返回一個Balise數組。 – kimbert

+0

但是,當您反序列化爲XML時,它不會導致'BaliseGroups'=>'BaliseGroup'集合=>'Balise'集合 – Cees

回答

0

我已經解決了我的問題。通過在xsd中註釋'BaliseGroup'的maxOccurs爲'unbounded',它會在'BaliseGroups'中創建'BaliseGroup'的集合。這裏是變化:

<xs:element name="BaliseGroups"> 
    <xs:annotation> 
     <xs:documentation>Een verzameling balisegroepen</xs:documentation> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="BaliseGroup" type="tBaliseGroup" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element>