我在挠头。此WSDL由CXF生成。它喜欢输入的WSDL和模式文件,但是当我尝试创建测试项目时,SOAPUI正在抱怨。整个wsdl太长了,但这里是与错误消息匹配的部分:
<xs:complexType name="RelatedResourcesType">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedResource">
<xs:complexType>
<xs:complexContent>
<xs:extension base="tns:CompoundResourceIdentifierType">
<xs:sequence>
<xs:element minOccurs="0" name="link">
<xs:complexType>
<xs:sequence/>
<xs:attribute ref="ns3:type" xmlns:ns3="http://www.w3.org/1999/xlink"/>
<xs:attribute ref="ns4:href" use="required" xmlns:ns4="http://www.w3.org/1999/xlink"/>
<xs:attribute ref="ns5:role" xmlns:ns5="http://www.w3.org/1999/xlink"/>
<xs:attribute ref="ns6:title" xmlns:ns6="http://www.w3.org/1999/xlink"/>
<xs:attribute ref="ns7:label" xmlns:ns7="http://www.w3.org/1999/xlink"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
...
...
错误:无法找到属性'type @ http://www.w3.org/1999/xlink'您的意思是引用名为type @ http://dws.sec?
的属性错误:未找到属性'href @ http://www.w3.org/1999/xlink'
错误:无法找到属性'role @ http://www.w3.org/1999/xlink'您的意思是引用名为role @ http://www.w3.org/2003/05的属性/皂信封?
错误:找不到属性'title @ http://www.w3.org/1999/xlink'您的意思是引用名为title @ http://metadata.esd.com/?的属性吗? p>
错误:无法找到属性'label @ http://www.w3.org/1999/xlink'您的意思是引用名为title @ http://metadata.esd.com/?的属性吗? p>
所以这些都应该来自xlink定义,我不确定为什么它没有看到它。有什么想法吗?或建议下一步尝试什么?
答案 0 :(得分:1)
我成功进行了更改,允许Visual Studio 2008从服务器检索WSDL并生成代码。步骤是
1)配置CXF以显示原始WSDL文件而不是其生成的版本 2)将导入的模式更改为在WSDL中内联,直到Visual Studio开心
详细说明:
1)在CXF配置文件中添加wsdlLocation属性
<jaxws:endpoint xmlnse="urn:discovery.services.sec.com"
id="DiscoveryImpl"
endpointName="e:discovery"
serviceName="e:DiscoveryService"
address="discovery"
implementor=com.sec.services.discovery.DiscoveryImpl"
wsdlLocation="WEB-INF\discovery.wsdl
>
有几种方法可以指定WSDL位置。 Google代码搜索很有帮助。
2)最初的WSDL开始了
...
删除上面的导入,结果是
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions ...>
<wsdl:types>
<xsd:schema ..> <!-- Discovery.xsd contents here -->
...
</xsd:schema>
</xsd:types>
<xsd:schema ..>
<!-- import of Discovery.xsd removed from here -->
...
</xsd:schema>
</xsd:types>
<wsdl:message ...>
我希望这能节省一些其他时间。