我有一个描述一组对象的 wsdl 文件,但我想仅从它们的一个子集中提取定义,这可能吗?如果可以,实现这一目标的最佳方法是什么?我的目标是为该子集生成 XSD 架构。
如果您不使用 .NET 中的 WSDL 生成工具怎么办?有没有使用其他工具完成此任务的好方法?我正在使用 Java,试图与 Web 服务交互。我有一个用于操作 xml 文档的库,它需要一个 xsd。我还有一个用于简单 SOAP 交互的库,这使得使用 Axis 过大了。如果我可以轻松地从 WSDL 中提取 XSD,那就太好了。
如果您确切地知道要从模式中提取哪些对象,您可以获取 wsdl 文件,通过 XSL 转换运行它以保留您想要的部分(或删除您不需要的部分)。
我假设您正在谈论 ASP.NET 中的 wsdl 生成
在 ASP.NET 中,通过反射自动生成一个 wsdl 文件。这意味着当您使用时,程序集的每个 Web 方法都将被映射:
http://mysite/myservices.asmx?wsdl
规避此限制的解决方法是:
1.禁用web.config中的默认文档生成
<webServices>
<protocols >
<remove name="Documentation"/>
</protocols>
</webServices>
2.使用 .net wsdl.exe 工具创建您自己的 wsdl 文件,并为您需要的子集编辑生成的 wsdl。
wsdl.exe http://mysite/myservices.asmx?wsdl
3.发布修改后的wsdl:
http://mysite/myservices.wsdl
作为最后的建议。如果可能的话,迁移到 WCF,它可以更好地控制 Web 服务。
警察 替我向马里奥问好 ;-)