WCF SOAP 服务:复杂类型属性为空
WCF SOAP Service: Complex Type Properties are null
我一直在尝试使用我提供的 WSDL 设置 WCF WebService 有一段时间了,但我对它无法正常工作感到非常沮丧。我正在构建的服务应该作为某种中间件从客户端接收 SOAP 消息(使用 SAP WSI/PI)并将消息的内容推送到我们的 CMS。它似乎有点工作,但它无法获取复杂类型的值。
我会尽量做到完整,但由于我是一个非常温和的程序员,所以我可能遗漏了有价值的信息或使用了错误的术语。如果您遗漏了一些可以提供帮助的信息,请告诉我。我正在从共享的架构中删除名称空间,以试图隐藏我为其设置服务的客户。
我从客户那里收到了 4 个文件,我试图用它们来构建我的 Web 服务。
- 1 x Service.wsdl
- 1 x Serivce.xsd
- 2 x ExportXMLSchema.xsd
由于我遇到的唯一问题是 ExportXMLSchema.xsd 中定义的复杂类型,因此我将分享这些内容。
ExportXMLSchema1.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/hrm/JobPublication" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/hrm/JobPublication" xmlns:p7="http://company.org/mail/global/datatypes">
<xsd:import namespace="http://company.org/mail/global/datatypes" schemaLocation="file:///localfile/ExportXMLSchema2.xsd"/>
<xsd:attributeGroup name="JobPositionPublication_Enhncmnt"/>
<xsd:group name="JobPositionPublication_Enhncmnt">
<xsd:sequence>
<xsd:element name="ObjectSearchID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf30a94311dfc60c00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PositionPlaceID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf31a94311dfc92300248143fb3c</xsd:appinfo>
<xsd:documentation>Formatieplaats ID</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PositionPlaceDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf32a94311df9bfa00248143fb3c</xsd:appinfo>
<xsd:documentation>Formatieplaats omschrijving</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="City" type="p7:City" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf33a94311df9f3900248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf34a94311dfa86b00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf35a94311dfb7f900248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">89c7af94b14111e19869984be172d7ee</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="TemporaryWorkerType" type="p7:TemporaryWorkerType" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf37a94311dfa43d00248143fb3c</xsd:appinfo>
<xsd:documentation>THK</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PublicationFunctionID" type="p7:PublicationFunctionID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">ca6011b0a94711dfbc1200248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="JobTitle" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">c0807df0a94811dfc40e00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="JobID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">c0807df1a94811df8d5000248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="Availability" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">d48077a0a94911dfa0bc00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DayOfWeek" type="p7:DayOfWeek">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac0bc0411df9b5e18a9058b3aa3</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DayPart" type="p7:DayPart">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac1bc0411dfbee818a9058b3aa3</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TeamID" type="p7:TeamID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a398b3c311e1c9ba78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="TeamIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a399b3c311e1a1f678e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaID" type="p7:AreaID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39ab3c311e1bf1478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">4f871a83b3c911e1b30c78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="Address" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39db3c311e1bef978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Street" type="p7:StreetNameHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39bb3c311e187e278e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="City" type="p7:City" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39cb3c311e18f8e78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b5b3c211e1c47678e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b6b3c211e1b3f578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b7b3c211e186c378e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WorkAgreementExtra" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a2b3c311e19c5178e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HourPerDayMin" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39eb3c311e1901e78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerDayMax" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39fb3c311e1927578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerWeekMin" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a0b3c311e197c978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerWeekMax" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a1b3c311e1c17078e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Depot" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a6b3c311e1b8c278e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DepotPostalCode" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a3b3c311e1a2f178e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepotStreet" type="p7:StreetNameHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a4b3c311e1bf2478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepotCity" type="p7:City" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a5b3c311e19be578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AvailabilityOptional" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c9b3c311e1ce3b78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DayOfWeekOpt" type="p7:DayOfWeek">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c7b3c311e18cea78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DayPartOpt" type="p7:DayPart">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c8b3c311e1cc8478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AmountDayRequired" type="p7:Count" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cab3c311e1b2cb78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HomeDelivery" type="p7:Count" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cbb3c311e1a63978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:group>
</xsd:schema>
ExportXMLSchema2.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/global/datatypes" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/global/datatypes">
<xsd:simpleType name="LanguageCode">
<xsd:restriction base="xsd:language">
<xsd:minLength value="2"/>
<xsd:maxLength value="9"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayPart.Content">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Part of the day</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TeamID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Team IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DescriptionHR">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic description datatype used for HR objects</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AreaID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Area IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="StreetNameHR">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic Streetname datatype used for HR objects (40 pos.)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Count">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Count (Used by ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TemporaryWorkerType">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Temporary Worker (Tijdelijke hulpkracht (THK): N, K of J); TNT specific</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="JobPositionPostingID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for JobPosting IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PostalCode">
<xsd:restriction base="xsd:token">
<xsd:minLength value="1"/>
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Hours">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic datatype for hours</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="2"/>
<xsd:minInclusive value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PublicationFunctionID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">PublicationFunctionID for ERECRUIT</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="City">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Cityname TNT</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="60"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayOfWeek.Content">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Description day of the week</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="DayPart">
<xsd:simpleContent>
<xsd:extension base="DayPart.Content">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="DayOfWeek">
<xsd:simpleContent>
<xsd:extension base="DayOfWeek.Content">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
我尝试了几种将服务引用导入到我的项目中的方法。将其添加为服务引用并使用 SVCUTIL 创建 class 文件并将其导入到我的项目中(主要是通过覆盖原始服务引用)。当我设置我的服务并将其托管在本地或我们的开发服务器上时,该服务运行良好。但是,我收到的消息(来自客户端或我自己使用 SoapUI 发送的消息)从不包含复杂类型属性。
示例消息包含可用性列表,如下所示:
<n0:Availability>
<DayOfWeek>MAANDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
<DayOfWeek>DINSDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
<DayOfWeek>WOENSDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
(n0 匹配命名空间:http://company.org/mail/hrm/JobPublication)
此消息在 SoapUI 中正确验证,但当我的服务收到消息时,DayOfWeek 和 DayPart 的值为空。我确实收到了三个 "Availbility" 值,所以它部分起作用了。
我尝试使用 /ImportXmlTypes and/or /Serializer:XmlSerializer 等选项通过 SVCUTIL 生成 class 文件,但似乎没有任何效果。 None 在此板上找到的建议似乎对我有用。希望有人能指出我忽略的地方。
提前致谢!
我发现我之前的一个解决方案终于解决了。
最有可能的修复是将 schemaLocation 属性添加到 XSD 和 WSDL 中的导入行。这是必需的,因为我为其提供此服务的公司更改了他们的公司名称,导致命名空间无法访问。我的猜测是,在这种情况下,您 需要 添加对原始 XSD 的引用,如果是这种情况的话。我有一个本地副本,所以我指向 XSD 的那个版本。这样 Visual Studio 甚至可以为复杂类型创建代理 class。
错误的是我测试它的方式。每次我 运行 测试请求和调试时,我都在测试我的服务的旧版本,而不是我一直在进行的更新。我猜是菜鸟错误,不幸的是我花了几个小时才意识到这一点。经验教训:确保您有一个可靠的本地测试环境,您可以在其中正确调试。
请让我知道我认为的解决方案是否有误,或者是否还有其他遗漏。可能对我或其他 运行 遇到类似问题有帮助。
我一直在尝试使用我提供的 WSDL 设置 WCF WebService 有一段时间了,但我对它无法正常工作感到非常沮丧。我正在构建的服务应该作为某种中间件从客户端接收 SOAP 消息(使用 SAP WSI/PI)并将消息的内容推送到我们的 CMS。它似乎有点工作,但它无法获取复杂类型的值。
我会尽量做到完整,但由于我是一个非常温和的程序员,所以我可能遗漏了有价值的信息或使用了错误的术语。如果您遗漏了一些可以提供帮助的信息,请告诉我。我正在从共享的架构中删除名称空间,以试图隐藏我为其设置服务的客户。
我从客户那里收到了 4 个文件,我试图用它们来构建我的 Web 服务。
- 1 x Service.wsdl
- 1 x Serivce.xsd
- 2 x ExportXMLSchema.xsd
由于我遇到的唯一问题是 ExportXMLSchema.xsd 中定义的复杂类型,因此我将分享这些内容。
ExportXMLSchema1.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/hrm/JobPublication" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/hrm/JobPublication" xmlns:p7="http://company.org/mail/global/datatypes">
<xsd:import namespace="http://company.org/mail/global/datatypes" schemaLocation="file:///localfile/ExportXMLSchema2.xsd"/>
<xsd:attributeGroup name="JobPositionPublication_Enhncmnt"/>
<xsd:group name="JobPositionPublication_Enhncmnt">
<xsd:sequence>
<xsd:element name="ObjectSearchID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf30a94311dfc60c00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PositionPlaceID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf31a94311dfc92300248143fb3c</xsd:appinfo>
<xsd:documentation>Formatieplaats ID</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PositionPlaceDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf32a94311df9bfa00248143fb3c</xsd:appinfo>
<xsd:documentation>Formatieplaats omschrijving</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="City" type="p7:City" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf33a94311df9f3900248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf34a94311dfa86b00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf35a94311dfb7f900248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">89c7af94b14111e19869984be172d7ee</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="TemporaryWorkerType" type="p7:TemporaryWorkerType" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf37a94311dfa43d00248143fb3c</xsd:appinfo>
<xsd:documentation>THK</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PublicationFunctionID" type="p7:PublicationFunctionID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">ca6011b0a94711dfbc1200248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="JobTitle" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">c0807df0a94811dfc40e00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="JobID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">c0807df1a94811df8d5000248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="Availability" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">d48077a0a94911dfa0bc00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DayOfWeek" type="p7:DayOfWeek">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac0bc0411df9b5e18a9058b3aa3</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DayPart" type="p7:DayPart">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac1bc0411dfbee818a9058b3aa3</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TeamID" type="p7:TeamID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a398b3c311e1c9ba78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="TeamIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a399b3c311e1a1f678e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaID" type="p7:AreaID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39ab3c311e1bf1478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">4f871a83b3c911e1b30c78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="Address" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39db3c311e1bef978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Street" type="p7:StreetNameHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39bb3c311e187e278e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="City" type="p7:City" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39cb3c311e18f8e78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b5b3c211e1c47678e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b6b3c211e1b3f578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b7b3c211e186c378e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WorkAgreementExtra" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a2b3c311e19c5178e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HourPerDayMin" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39eb3c311e1901e78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerDayMax" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39fb3c311e1927578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerWeekMin" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a0b3c311e197c978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerWeekMax" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a1b3c311e1c17078e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Depot" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a6b3c311e1b8c278e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DepotPostalCode" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a3b3c311e1a2f178e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepotStreet" type="p7:StreetNameHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a4b3c311e1bf2478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepotCity" type="p7:City" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a5b3c311e19be578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AvailabilityOptional" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c9b3c311e1ce3b78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DayOfWeekOpt" type="p7:DayOfWeek">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c7b3c311e18cea78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DayPartOpt" type="p7:DayPart">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c8b3c311e1cc8478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AmountDayRequired" type="p7:Count" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cab3c311e1b2cb78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HomeDelivery" type="p7:Count" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cbb3c311e1a63978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:group>
</xsd:schema>
ExportXMLSchema2.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/global/datatypes" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/global/datatypes">
<xsd:simpleType name="LanguageCode">
<xsd:restriction base="xsd:language">
<xsd:minLength value="2"/>
<xsd:maxLength value="9"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayPart.Content">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Part of the day</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TeamID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Team IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DescriptionHR">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic description datatype used for HR objects</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AreaID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Area IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="StreetNameHR">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic Streetname datatype used for HR objects (40 pos.)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Count">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Count (Used by ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TemporaryWorkerType">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Temporary Worker (Tijdelijke hulpkracht (THK): N, K of J); TNT specific</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="JobPositionPostingID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for JobPosting IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PostalCode">
<xsd:restriction base="xsd:token">
<xsd:minLength value="1"/>
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Hours">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic datatype for hours</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="2"/>
<xsd:minInclusive value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PublicationFunctionID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">PublicationFunctionID for ERECRUIT</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="City">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Cityname TNT</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="60"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayOfWeek.Content">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Description day of the week</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="DayPart">
<xsd:simpleContent>
<xsd:extension base="DayPart.Content">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="DayOfWeek">
<xsd:simpleContent>
<xsd:extension base="DayOfWeek.Content">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
我尝试了几种将服务引用导入到我的项目中的方法。将其添加为服务引用并使用 SVCUTIL 创建 class 文件并将其导入到我的项目中(主要是通过覆盖原始服务引用)。当我设置我的服务并将其托管在本地或我们的开发服务器上时,该服务运行良好。但是,我收到的消息(来自客户端或我自己使用 SoapUI 发送的消息)从不包含复杂类型属性。
示例消息包含可用性列表,如下所示:
<n0:Availability>
<DayOfWeek>MAANDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
<DayOfWeek>DINSDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
<DayOfWeek>WOENSDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
(n0 匹配命名空间:http://company.org/mail/hrm/JobPublication)
此消息在 SoapUI 中正确验证,但当我的服务收到消息时,DayOfWeek 和 DayPart 的值为空。我确实收到了三个 "Availbility" 值,所以它部分起作用了。
我尝试使用 /ImportXmlTypes and/or /Serializer:XmlSerializer 等选项通过 SVCUTIL 生成 class 文件,但似乎没有任何效果。 None 在此板上找到的建议似乎对我有用。希望有人能指出我忽略的地方。
提前致谢!
我发现我之前的一个解决方案终于解决了。
最有可能的修复是将 schemaLocation 属性添加到 XSD 和 WSDL 中的导入行。这是必需的,因为我为其提供此服务的公司更改了他们的公司名称,导致命名空间无法访问。我的猜测是,在这种情况下,您 需要 添加对原始 XSD 的引用,如果是这种情况的话。我有一个本地副本,所以我指向 XSD 的那个版本。这样 Visual Studio 甚至可以为复杂类型创建代理 class。
错误的是我测试它的方式。每次我 运行 测试请求和调试时,我都在测试我的服务的旧版本,而不是我一直在进行的更新。我猜是菜鸟错误,不幸的是我花了几个小时才意识到这一点。经验教训:确保您有一个可靠的本地测试环境,您可以在其中正确调试。
请让我知道我认为的解决方案是否有误,或者是否还有其他遗漏。可能对我或其他 运行 遇到类似问题有帮助。