我正在拾取一個使用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