XML从XSD ComplexType创建元素名称,而不是从Element名称创建

时间:2019-10-12 11:11:02

标签: xml xsd

我有一个使用SVCUTIL.exe生成为C#代码的XSD架构。然后,我用数据填充生成的代码,并将其作为响应返回到WCF服务中。

在生成的xml响应中,在我的一个元素中,元素名称是复杂类型的名称,而不是XSD中的元素名称。 示例:

  <xs:complexType name="ReadSchoolsResponseType">
    <xs:sequence>
      <xs:element name="Schools" type="SchoolsType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SchoolsType">
    <xs:sequence>
      <xs:element name="School" type="SchoolType" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

,生成的XML是:


<ReadSchoolsResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Schools>
    <SchoolType> </SchoolType>
  </Schools>
</ReadSchoolsResponse

为什么School元素呈现为SchoolType?我用相同的方式创建了很多元素,并且可以正确地序列化。 谢谢。

1 个答案:

答案 0 :(得分:0)

所以我想出了解决方案: 删除SchoolsType复合类型名称,然后将元素详细信息移入其中。

  <xs:complexType name="SchoolsType">
    <xs:sequence>
      <xs:element name="School" maxOccurs="unbounded"/>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="asdf" type="xs:int"/>
            <xs:element name="qwer" type="xs:dateTime"/>
            <xs:element name="yxcv" type="xs:string"/>
            <xs:element name="tzui" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

但是我仍然不知道为什么所讨论的代码不起作用。