2017-04-20 4 views
2

Ich nehme ein altes Projekt auf, das SOAP und WSDL verwendet, etwas, mit dem ich nicht so vertraut bin. Ich habe die folgende Datenstruktur in der WSDL definiert (in diesem Beispiel vereinfacht):Konvertieren eines PHP-Arrays in eine SOAP-Struktur

<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> 

Das Projekt wird mit nusoap, ein Teil meiner PHP wie folgt aussieht:

$payment['ProviderData'] = array(
    'Field' => array(
     'Name' => 'Foo', 
    ), 
); 

die in der Lage ist zu produzieren die folgende (wiederum vereinfacht hier):

<payment> 
    <ProviderData> 
     <Field Name="Foo" /> 
    </ProviderData> 
</payment> 

ich bin nicht sicher, welches Format meine PHP-Array in sein sollte, um XML zu erzeugen, die wie folgt aussieht:

<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> 

Ich habe versucht, einen Schlüssel Einstellung Value genannt, !Value und andere Variationen, ohne Erfolg.

Jede Hilfe wäre willkommen. Vielen Dank.

+0

Warum nicht 'XMLWriter' verwenden? http://php.net/manual/en/book.xmlwriter.php – JustOnUnderMillions

+0

Weil es ein Legacy-Projekt ist, in der Produktion und ich möchte nicht mehr als nötig ändern müssen. – SteveEdson

+0

Sie verwenden also eine Nusoap-Funktion, um das XML aus dem Array zu generieren? Oder eine selbstgemachte Funktion? http://StackOverflow.com/a/6743230/4916265 – JustOnUnderMillions

Antwort

1

Nach der Arbeit nach hinten zu konstruieren (das XML-Beispiel in PHP konvertieren), das Format, das Sie wollen ist:

$payment['ProviderData'] = array(
    'Field' => array (
    0 => 
    array (
     '!Name' => 'Foo', 
     '!' => 'Bar', 
    ), 
    1 => 
    array (
     '!Name' => 'Amount', 
     '!' => '98', 
    ), 
    ) 
); 
0

die beste Lösung ist, eine WSDL zu PHP-Generator Susch als PackageGenerator Projekt zu verwenden, da Sie nicht, wird sich fragen, wie die Anfrage

Verwandte Themen