代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

xsd.exe生成的代码有问题:元素序列生成为数组

  •  0
  • JL. Hans Passant  · 技术社区  · 15 年前

    我正在尝试使用xsd.exe从xsd生成c代码

    这是问题所在的一小部分

    <xs:element name="EmailConfiguration" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="DefaultSendToAddressCollection" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="EmailAddress" type="xs:string" minOccurs="1" maxOccurs="unbounded" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
    
            </xs:sequence>
          </xs:complexType>
        </xs:element>
    

    当前正在将DefaultSendToAddressCollection生成为字符串[]

    如何更改XSD,使其生成为强类型,并将电子邮件地址作为集合更改为强类型?

    问题更新:

    或者xsd.exe被窃听了?

    1 回复  |  直到 15 年前
        1
  •  2
  •   womp    15 年前

    您已指定电子邮件地址类型 xs:string 因此,DefaultSendToAddressCollection不是复杂类型,而是字符串数组,而不是对象集合。

    如果将emailAddress更改为复杂类型,并将其 xs:attribute 类型的 字符串: 要将地址存储到,您将得到一组emailAddress对象。

    <xs:element name="EmailConfiguration" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="DefaultSendToAddressCollection" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="EmailAddress" minOccurs="1" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:attribute name="Address" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>