如何从 wsdl 生成 xsd
Posted
技术标签:
【中文标题】如何从 wsdl 生成 xsd【英文标题】:How to generate xsd from wsdl 【发布时间】:2014-06-07 23:03:31 【问题描述】:有什么方法可以从 wsdl 生成 xsd。 任何链接或工具也可以。最简单的方法是什么?
【问题讨论】:
您可以从 WSDL 生成 XML,因为 WSDL 是服务规范。不过,转换为 XSD 听起来很奇怪。你为什么想这么做? ***.com/questions/1952015/… 因为需要使用 wsdl 的 xsd 创建 xml。 您可以提取在 WSDL 的<types/>
元素中导入或嵌入的 XSD。如果已导入,您只需获取 URL(如果是相对路径,还可能计算绝对路径)。如果是嵌入的,则提取<types/>
的内容。
顺便说一句,XJC 代码生成器可以直接处理 WSDL:***.com/questions/15903249/…
我在这个任务上坚持了太久。手动转换并不难,但有一个工具(XMLSpy)。也可以免费评估该工具 30。
【参考方案1】:
您可以使用 SoapUI:http://www.soapui.org/ 这是一个通常很方便的程序。 创建一个新项目,连接到 WSDL 链接,然后右键单击该项目并说“显示界面查看器”。在左侧的“Schemas”下,您可以看到 XSD。
SoapUI 可以做很多事情!
【讨论】:
我找不到从该工具导出 XSD 的选项...您只是想将其用作 WSDL 查看器并使用它来复制和粘贴<wsdl:types>
元素的内容为在@helderdarocha 的评论中建议(这似乎是正确的)?
是的,我只是复制粘贴。也许有更优雅的方式来做到这一点?
太棒了。我尝试使用 svcutil.exe,它生成了架构,但生成了多个 XSD 文件,而不仅仅是客户端请求的一个 XSD 文件。只需从 SOAPUI 复制和粘贴(同样是 按照以下步骤操作:
-
使用 WSDL 创建项目。
选择您的界面并在界面查看器中打开。
导航到“WSDL 内容”选项卡。
使用“WSDL 内容”选项卡下的最后一个图标:“将整个 WSDL 和包含/导入的文件导出到本地目录”。
选择要将 XSD 导出到的文件夹。
注意:SOAPUI 将删除所有相对路径并将所有 XSD 保存到同一文件夹。参考截图:
【讨论】:
它只导出 WSDL,不导出 XSD 文件。 (使用 SoapUI 5.2.1)也许我做错了什么? @Raj,您在这里指的是哪个版本的 SoapUI? @PimHazebroek 我添加了一个截图供参考,我使用的是 SoapUI 5.4.0 在 SoapUI 5.5 中,该选项仅生成一个 wsdl 文件,您可以继续进行脏复制粘贴操作以获取其中的方案定义:wsdl:definitions -> wsdl:types -> xs:schema
并使用 xsd 扩展名。如果需要,添加第一行:<?xml version="1.0"?>
【参考方案3】:
(当 .wsdl 使用 import 引用 .xsd/schemas 时) 如果您使用的是 WMB Toolit (v8.0.0.4 WMB),那么您可以使用以下步骤找到 .xsd:
创建库(可选)> 右键单击,新建消息模型文件 > 选择 SOAP XML > 选择选项“我的数据已经有 WSDL”>“选择工作区外的文件”>“选择要导入的 WSDL 绑定”(如果有多个)>完成。
这将为您提供工作区中的 .xsd 和 .wsdl 文件(应用程序透视图)。
【讨论】:
【参考方案4】:-
Soap ui -> 新建 SOAPUI 项目 -> 使用 wsdl 创建项目(假设我们有一个 testService)
您将有一个名为 TestService 的文件夹,然后在其中会有 tokenTestServiceSoapBinding(示例)-> 右键单击它
导出定义 -> 提供您需要放置定义的位置。
导出的位置将包含 xsd 和 wsdl 文件。
希望这会有所帮助!
【讨论】:
【参考方案5】:一旦我在 wsdl 的顶部找到了一个 xsd 链接。 就像这个来自网络的 wsdl 示例一样,您可以看到一个链接 xsd1。服务器必须正在运行才能看到它。
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
【讨论】:
以上是关于如何从 wsdl 生成 xsd的主要内容,如果未能解决你的问题,请参考以下文章
WCF 如何从 wsdl 和 xsd 生成服务 - 合同优先
如何从现有的 WSDL 和 XSD 文件生成 WCF 服务主机