4

我正在尝试使用这个 wsdl:http ://www.ans.gov.br/padroes/tiss/schemas/ 问题是当对 wsdl 的引用添加到 C# 项目中时,会为相同的 xsd 类型创建不同的命名空间,例如cabecalhoTransacao,所以使用的时候应该是这样的:

  • tissCancelaGuia.cabecalhoTransacao
  • tissVerificaElegabilidade.cabecalhoTransacao

我怎样才能解决这个问题而无需转换?这是可能的?

4

1 回答 1

4

有可能的。这就是我会做的,基于我对你所指的东西的了解程度。

首先,我将从您描述的页面中抓取并下载所有 WSDL/XSD 引用,以找出公共集(哪些服务/版本共享哪些 XSD)。加载它们之后,这是我可以看到的群体(鲑鱼颜色是 WSDL,灰色是 XSD)。

在此处输入图像描述

因此,您有 5 个主要群体。显然,绑定到同一组 XSD 的所有 WSDL 都应该在打包方面表现出您正在寻找的类型的共享。

下一步是定义一个 WSDL,如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- WSDL 1.1 generated by QTAssistant (http://www.paschidev.com) -->
<definitions name="aggregate" targetNamespace="urn:tempuri-org"  xmlns="http://schemas.xmlsoap.org/wsdl/">
    <import namespace="http://www.ans.gov.br/tiss/ws/tipos/tissLoteGuias/v20202" location="tissLoteGuiasV2_02_02.wsdl"/>
    <import namespace="http://www.ans.gov.br/tiss/ws/tipos/tissSolicitacaoStatusProtocolo/v20202" location="tissSolicitacaoStatusProtocoloV2_02_02.wsdl"/>
</definitions>

注意:如果用于位置的相对 URI 对您不起作用,请尝试使用绝对 URI(如果您希望在自己的机器上创建此 WSDL,并像它们在远程服务器上一样指向 WSDL 位置,则更是如此)。继续添加您需要的任何 WSDL,我只添加了两个用于说明。

无论如何,一旦完成,启动您的 Visual Studio,并在您的项目中添加对您刚刚创建的这个WSDL 的服务引用(正如@JohnSaunders 在他的评论中所说的那样)。确保您首先验证您的 WSDL,以确保您清除了一些东西。

在此处输入图像描述

生成的代码现在为您提供常用类型,以便您可以轻松地编排这些服务的调用,通过将内容从一个传递到另一个等。

于 2013-03-12T20:29:34.170 回答