2

我有一个描述一组对象的 wsdl 文件,但我想仅从它们的一个子集中提取定义,这可能吗?如果可以,实现这一目标的最佳方法是什么?我的目标是为该子集生成 XSD 架构。

如果您不使用 .NET 中的 WSDL 生成工具怎么办?有没有使用其他工具完成此任务的好方法?我正在使用 Java,试图与 Web 服务交互。我有一个用于操作 xml 文档的库,它需要一个 xsd。我还有一个用于简单 SOAP 交互的库,这使得使用 Axis 过大了。如果我可以轻松地从 WSDL 中提取 XSD,那就太好了。

4

2 回答 2

1

如果您确切地知道要从模式中提取哪些对象,您可以获取 wsdl 文件,通过 XSL 转换运行它以保留您想要的部分(或删除您不需要的部分)。

于 2009-05-05T17:31:21.487 回答
0

我假设您正在谈论 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 服务。

警察 替我向马里奥问好 ;-)

于 2009-03-12T19:45:35.723 回答