3

我们使用 php 创建了一个肥皂服务器,并且很少有函数根据传递的参数在 xml 元素方面给出不同的结果。

为了进一步解释,一个函数接受参数 a 并且根据接收到的数据,它可以返回具有不同数量的子元素的两个不同数组(复杂类型)中的任何一个。

例如

   if a =9 then outcome is array/struct ,,,, 
   a[delta]=20 ,,, 
   a[sigma]=yellow 

   if a =3  ,
   a[aTotallyDifferentBallgame]=Omaha ,,,
   a[t]=1 ,,,
   a[theNumberOfElementsCanVary]=yup

为了解释这种可能的差异,我们在模式中使用了选择,从而试图暗示结果可以是选择中的任何单个元素,无论是简单类型还是复杂类型。

现在理论上这听起来很合乎逻辑,并且可以与 php 的 soap 客户端正常工作,但是当我们尝试在表单应用程序中使用 Visual Studio 的添加服务引用功能时;该应用程序未能为其创建代码,理由是由于某些深不可测的原因,不允许使用xs:choice 。

现在我真正想知道的是我需要对我的 wsdl 或 soap 服务器进行哪些更改才能使其正常工作。我们认为解决方法是仅将结果固定到一种可能的情况,并利用完全不同的函数来确定另一种情况的结果,从而避免使用选择,但坦率地说,这似乎太多余和奇怪了。

有什么我错过的吗?请让我知道你有什么想法。谢谢!

4

1 回答 1

1

创建服务引用机制尝试将架构映射到 C# 类,并且 C# 类中没有与架构中的 a 对应的结构choice- 一个类不能具有一个属性或另一个属性的值,但不能同时具有这两个属性的值。

我的建议是替换choice为可选元素序列,相应的 C# 类将具有每个元素的属性 - 其中只有一个具有值,另一个将是null,因为 PHP 服务仅返回一个值一次。

于 2013-04-01T20:01:22.317 回答