我有一个使用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?我用相同的方式创建了很多元素,并且可以正确地序列化。 谢谢。
答案 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>
但是我仍然不知道为什么所讨论的代码不起作用。