【问题标题】:How to generate xsd from wsdl如何从 wsdl 生成 xsd
【发布时间】:2014-06-07 23:03:31
【问题描述】:

有什么方法可以从 wsdl 生成 xsd。 任何链接或工具也可以。最简单的方法是什么?

【问题讨论】:

  • 您可以从 WSDL 生成 XML,因为 WSDL 是服务规范。不过,转换为 XSD 听起来很奇怪。你为什么想这么做? stackoverflow.com/questions/1952015/…
  • 因为需要使用 wsdl 的 xsd 创建 xml。
  • 您可以提取在 WSDL 的 <types/> 元素中导入或嵌入的 XSD。如果已导入,您只需获取 URL(如果是相对路径,还可能计算绝对路径)。如果是嵌入的,则提取<types/>的内容。
  • 顺便说一句,XJC 代码生成器可以直接处理 WSDL:stackoverflow.com/questions/15903249/…
  • 我在这个任务上坚持了太久。手动转换并不难,但有一个工具(XMLSpy)。也可以免费评估该工具 30。

标签: wsdl xsd


【解决方案1】:

您可以使用 SoapUI:http://www.soapui.org/ 这是一个通常很方便的程序。 创建一个新项目,连接到 WSDL 链接,然后右键单击该项目并说“显示界面查看器”。在左侧的“Schemas”下,您可以看到 XSD。

SoapUI 可以做很多事情!

【讨论】:

  • 我找不到从该工具导出 XSD 的选项...您只是想将其用作 WSDL 查看器并使用它来复制和粘贴 <wsdl:types> 元素的内容为在@helderdarocha 的评论中建议(这似乎是正确的)?
  • 是的,我只是复制粘贴。也许有更优雅的方式来做到这一点?
  • 太棒了。我尝试使用 svcutil.exe,它生成了架构,但生成了多个 XSD 文件,而不仅仅是客户端请求的一个 XSD 文件。只需从 SOAPUI 复制和粘贴(同样是 标记之间的内容)并将其保存为 XSD 文件就可以很好地工作。不要像在 Microsoft 工具中使用什么标志/参数那样玩弄 coda obscura。没有合并文件。复制,粘贴,保存,完成。谢谢(你的)信息。 SOAPUI 是一个很棒的工具。
  • 如果这对其他人来说是个问题,复制粘贴到新文件并不总是创建一致的模式。它适用于小型、单一模式的 WSDL 文件。但是,在我(由第 3 方)提供的 WSDL 上,有 6 个不同的模式没有相关的导入语句。所以我猜这个解决方案的质量取决于提供的 WSDL 的质量。
  • 没有“架构”选项卡
【解决方案2】:

按照以下步骤操作:

  1. 使用 WSDL 创建项目。
  2. 选择您的界面并在界面查看器中打开。
  3. 导航到“WSDL 内容”选项卡。
  4. 使用“WSDL 内容”选项卡下的最后一个图标:“将整个 WSDL 和包含/导入的文件导出到本地目录”。
  5. 选择要将 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】:
    1. Soap ui -> 新建 SOAPUI 项目 -> 使用 wsdl 创建项目(假设我们有一个 testService)
    2. 您将有一个名为 TestService 的文件夹,然后在其中会有 tokenTestServiceSoapBinding(示例)-> 右键单击​​它
    3. 导出定义 -> 提供您需要放置定义的位置。
    4. 导出的位置将包含 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/">
      

      【讨论】:

        猜你喜欢
        • 2010-10-29
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多