2016-06-01 2 views
1

Das ist mein Array:Konvertieren Sie mehrere Arrays in XML in CakePHP

Array (
    [Payments] => Array (
      [0] => Array (
      [Payment] => Array (
        [Invoice] => Array (
         [InvoiceNumber] => INV-0084 
       ) 
        [Account] => Array (
         [Code] => 260 
       ) 
       [Date] => 1969-12-31T17:00:00 
       [Amount] => 119 
      ) 
     ) 
     [1] => Array (
      [Payment] => Array (
       [Invoice] => Array (
         [InvoiceNumber] => INV-0085 
       ) 
       [Account] => Array (
         [Code] => 260 
       ) 
       [Date] => 1969-12-31T17:00:00 
       [Amount] => 132 
      ) 
     ) 
    ) 
) 

ich es auf XML-Daten zu konvertieren. Ich habe die CakePHP-Bibliothek verwendet, um die XML-Daten zu konvertieren.

<Payments> 
    <Payment> 
    <Invoice> 
     <InvoiceNumber>INV-0084</InvoiceNumber> 
    </Invoice> 
    <Account> 
     <Code>260</Code> 
    </Account> 
    <Date>2016-06-01T17:00:00 </Date> 
    <Amount>119</Amount> 
</Payment> 
<Payment> 
    <Invoice> 
     <InvoiceNumber>INV-0085</InvoiceNumber> 
    </Invoice> 
    <Account> 
     <Code>260</Code> 
    </Account> 
    <Date>2016-06-01T17:00:00 </Date> 
    <Amount>132</Amount> 
</Payment> 

ich die Funktion

$paymentXml = Xml::fromArray($paymentXmlData, array('format' =>'tags')); 
$paymentXml = $paymentXml->asXML(); 

Der Fehler benutzt hatte ich bekam, war:

SimpleXMLElement :: __ construct(): Entity: Zeile 3: Parser-Fehler: Zusätzlicher Inhalt am Ende des Dokuments "," Datei ":"/var/www/html/Kalkulation/lib/Kuchen/Dienstprogramm/Xml.php "," Linie ": 197

Wie löse ich diese mithilfe der Standardbibliothek?

+1

möglich duplizieren http://stackoverflow.com/questions/17428323/convert-multidimensional-array-into-xml –

+0

Ich mag Um die Antwort mit CakePHP-Bibliothek –

+0

zu haben, kann ich leicht Array ohne [0] und [1] konvertieren, die Sie in Array (dh) einzelnen Array sehen können. –

Antwort

1

Überprüfen Sie die Dokumentation. Ihre Daten sind nicht richtig strukturiert. Knoten müssen unter einem einzigen Schlüssel verschachtelt sein, der als Name für die Knoten dient.

Was machst du da effektiv mehrere Stammknoten erstellen, wie:

<Payments> 
    <Payment> 
     <Invoice> 
      <InvoiceNumber>INV-0084</InvoiceNumber> 
     </Invoice> 
     ... 
    </Payment> 
</Payments> 
<Payments> 
    <Payment> 
     <Invoice> 
      <InvoiceNumber>INV-0085</InvoiceNumber> 
     </Invoice> 
     ... 
    </Payment> 
</Payments> 

Welche ungültige XML ist. Ihre Daten müssen wie folgt strukturiert sein: Payments ist der Stammknoten mit zwei Payment Knoten.

array(
    'Payments' => array(
     'Payment' => array(
      array(
       'Invoice' => array(
        'InvoiceNumber' => 'INV-0084' 
       ), 
       'Account' => array(
        'Code' => '260' 
       ), 
       'Date' => '1969-12-31T17:00:00', 
       'Amount' => '119' 
      ), 
      array(
       'Invoice' => array(
        'InvoiceNumber' => 'INV-0085' 
       ), 
       'Account' => array(
        'Code' => '260' 
       ), 
       'Date' => '1969-12-31T17:00:00', 
       'Amount' => '132' 
      ) 
     ) 
    ) 
) 

Siehe auch: