如何将.xsd文件转换为wsdl?

如何将.xsd文件转换为wsdl?,xsd,wsdl,Xsd,Wsdl,我有一个.xsd文件,我需要将它转换成wsdl,我该如何做?这种转换方法正确吗。我在同一个.xsd文件中有请求和响应数据您不可能这么容易做到这一点。通常,xsd定义输入和输出消息的结构(类型)。wsdl使用xsd定义服务将公开的操作。操作通常有一个名称以及一对输入和输出消息 我不知道一个工具如何仅从xsd中“重建”操作,除非它使用命名约定。例如,消息requestDoIt和responseDoIt-->操作DoIt。如果xsd已经包含了操作(这将是不寻常的),这可能是正常的,但它似乎不是您的情况

我有一个.xsd文件,我需要将它转换成wsdl,我该如何做?这种转换方法正确吗。我在同一个.xsd文件中有请求和响应数据

您不可能这么容易做到这一点。通常,
xsd
定义输入和输出消息的结构(类型)。
wsdl
使用xsd定义服务将公开的操作。
操作通常有一个名称以及一对输入和输出消息

我不知道一个工具如何仅从xsd中“重建”操作,除非它使用命名约定。例如,消息
requestDoIt
responseDoIt
-->操作
DoIt
。如果xsd已经包含了操作(这将是不寻常的),这可能是正常的,但它似乎不是您的情况

手动创建wsdl不应该太长

<types>
    <xsd:schema xmlns="..." targetNamespace="...">
        <xsd:import namespace="..." schemaLocation="MySchema.xsd"/>
    </xsd:schema>
</types>
...
 <wsdl:portType name="...">
    <wsdl:operation name="doIt">
        <wsdl:input message="tns:requestDoIt"/>
        <wsdl:output message="tns:responseDoIt"/>
    </wsdl:operation>
</wsdl:portType>

...
请查看以获取wsdl的一般结构

或者你可以尝试一下这个工具,它的目的显然是为了简化这个任务。(请注意,我从未使用过它)


另一种方法是从xsd生成类,然后使用它们手动定义服务类(这是将类型匹配到相应操作中的繁琐部分),然后使用另一种工具将服务类转换回完整的wsdl。对于Java或C#,可以使用各种工具在xsd和wsdl之间进行转换:wsgen、wsimport、xsd.exe、wsdl.exe。

它是可下载的文件吗?我没有在其中获取.exe?您将在sdk文件夹中找到它。请参阅也尝试从中使用WSDL生成器,但它没有创建符合提供的XSD的WSDL。例如,它无法正确创建消息元素,因为它忽略了任何输入参数。