XSD 工具跳过嵌套级别

The XSD tool skips a nested level

我希望我对我的问题的表述是正确的。当我们 运行 我们 xsd 上的 xsd 工具创建 类 时,代码并不完全代表一个部分上的 xsd。是这样的:

XSD: 'BaliseGroups' => 'BaliseGroup' 的集合 => 'Balise' 的集合

代码:'BaliseGroups' => 名为 'BaliseGroup'...

的类型 'Balise' 的集合
<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# 代码块中看到的那样,它创建了一个 属性 Balise[] 类型的 BaliseGroup。这应该是类型 tBaliseGroup[].

我猜想 xsd 有问题,但我不知道是什么..

我的问题已经解决了。通过在 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>