我正在尝试根据我的xsd文件生成带数据合同注释的类。然后,这些类应用作我的Soap Web服务的交换数据类型。
在cmd.exe中,我尝试运行命令:
svcutil / dconly loginSoap.xsd / language:C#
但是失败,并显示以下错误:
错误:无法导入名称空间“ http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login”中的“ loginRequest”。根粒子必须是序列。要么更改架构,以便这些类型可以映射到数据协定类型,要么使用ImportXmlType或使用其他序列化器。
如果使用/ dataContractOnly选项导入数据合同类型并收到此错误消息,请考虑改用xsd.exe。在服务合同上应用XmlSerializerFormatAttribute属性后,可以在Windows Communication Foundation中使用xsd.exe生成的类型。或者,考虑使用/ importXmlTypes选项将这些类型导入为XML类型,以与服务合同上的DataContractFormatAttribute属性一起使用。
我的xsd文件是:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login"
targetNamespace="http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login"
elementFormDefault="qualified">
<xs:element name="loginRequest">
<xs:complexType>
<xs:all>
<xs:element name="username" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="loginResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
错误将您指向正确的方向。
只需将<xs:all>
替换为<xs:sequence>
或将XSD.exe与/classes