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>
我希望我对我的问题的表述是正确的。当我们 运行 我们 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>