我正在拾取一个使用SOAP和WSDL的旧项目,这一点我不太熟悉。我在WSDL(在本例简化)中定义的数据结构如下:将PHP数组转换为SOAP结构
<s:complexType name="RequestPayment">
<s:sequence>
<s:element minOccurs="0" name="ProviderData" type="s0:ArrayOfFieldPairOfNameString"/>
</s:sequence>
<s:attribute name="CancelURL" type="s:string"/>
<s:attribute name="ReturnURL" type="s:string"/>
</s:complexType>
<s:complexType name="ArrayOfFieldPairOfNameString">
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="0" name="Field" nillable="true" type="s0:PairOfNameString"/>
</s:sequence>
</s:complexType>
<s:complexType name="PairOfNameString">
<s:simpleContent>
<s:extension base="s:string">
<s:attribute name="Name" type="s:string" use="required"/>
</s:extension>
</s:simpleContent>
</s:complexType>
该项目使用的NuSOAP,我的PHP的一部分是这样的:
$payment['ProviderData'] = array(
'Field' => array(
'Name' => 'Foo',
),
);
这是能够产生以下的(再次,简化这里):
<payment>
<ProviderData>
<Field Name="Foo" />
</ProviderData>
</payment>
我不知道我的PHP数组应该是什么样的格式,以产生XML看起来像以下:
<payment>
<ProviderData>
<Field Name="name 1">value 1</Field>
<Field Name="name 10">value 10</Field>
<Field Name="name 2">value 2</Field>
</ProviderData>
</payment>
我试过设置了一个名为Value
键,!Value
,和其他变化,都没有成功。
任何帮助,将不胜感激。谢谢。
为什么不使用'XMLWriter'? http://php.net/manual/en/book.xmlwriter.php – JustOnUnderMillions
因为它是一个传统的项目,在生产中我不想改变超过需要。 – SteveEdson
所以你使用nusoap函数从数组中生成xml?或者一些自制功能? http://stackoverflow.com/a/6743230/4916265 – JustOnUnderMillions