问题描述
我正在创建一个基于 Spring 的 SOAP Web 服务,我正在尝试返回一个名为 AVAILABLE_PACKAGES 的自定义列表,其中包含多个 PACKAGE_ITEM 元素。这些 PACKAGE_ITEM 元素中的每一个都由两个字符串 PACKAGE_NAME 和 PACKAGE_PRICE 组成。
我尝试了多种配置,但我一直收到在线错误
<xs:element name="availablePackagesList" type="xs:AvailablePackagesList" />
错误如下:
在这一行找到多个注释:
- src-resolve:无法将名称“xs:AvailablePackagesList”解析为 (n)“类型定义”组件。
- src-resolve.4.2:解析组件“xs:AvailablePackagesList”时出错。检测到
“xs:AvailablePackagesList”在命名空间中 'http://www.w3.org/2001/XMLSchema',但是来自这里的组件
命名空间不可从架构文档中引用...
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http:/hello.com/queries"
xmlns:tns="http:/hello.com/queries"
elementFormDefault="qualified">
<!--GetSubscriberAvailablePackages -->
<xs:element
name="MobileGetSubscriberAvailablePackagesRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="network" type="xs:string" />
<xs:element name="username" type="xs:string" />
<xs:element name="password" type="xs:string" />
<xs:element name="subscriberData" type="xs:string" />
<xs:element name="subscriberDataType" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="MobileGetSubscriberAvailablePackagesResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="network" type="xs:string" />
<xs:element name="subscriberData" type="xs:string" />
<xs:element name="subscriberDataType" type="xs:string" />
<xs:element name="response" type="xs:string" />
<xs:element name="responseDetails" type="xs:string" />
<xs:element name="availablePackagesList"
type="xs:AvailablePackagesList" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="AvailablePackagesList">
<xs:sequence>
<xs:element name="AvaillablePackage"
type="xs:AvaillablePackageItem" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="AvaillablePackageItem">
<xs:attribute name="packageName" type="xs:integer"
use="required" />
<xs:attribute name="packagePrice" type="xs:integer"
use="required" />
</xs:complexType>
解决方法
为了消除您的直接错误和一个后续错误,
-
将
type="xs:AvailablePackagesList"
改为type="tns:AvailablePackagesList"
,并且 -
将
type="xs:AvaillablePackageItem"
改为type="tns:AvaillablePackageItem"
因为两者都在 http:/yobitelecom.com/queries
命名空间中,而不是 http://www.w3.org/2001/XMLSchema
命名空间中。