2017-04-18 11 views
0

私はループで処理しているいくつかのデータに基づいてXMLファイルを生成しようとしています。私の最後のXML出力は次のように見ている必要がありますPHP SimpleXMLElementループ内のaddChild最後の値のみを表示

<Line> 
    <Code>123</Code> 
    <Description>Acme Constructions</Description> 
    <TransactionAmount>44.00</TransactionAmount> 
    <BaseCurrency>AUD</BaseCurrency> 
</Line> 
<Line> 
    <Code>456</Code> 
    <Description>Acme Flowers</Description> 
    <TransactionAmount>23.00</TransactionAmount> 
    <BaseCurrency>AUD</BaseCurrency> 
</Line> 
<Line> 
    <Code>789</Code> 
    <Description>General Hospital</Description> 
    <TransactionAmount>19.00</TransactionAmount> 
    <BaseCurrency>AUD</BaseCurrency> 
</Line> 

私はをループだし、新しい子XMLレコードを作成するためにはaddChildを使用しますが、私の最後のXMLファイルだけで、前回のないループからの最後の値を示していますもの。ここに私のPHPコードです:

$xml = new SimpleXMLElement('<xml></xml>'); 

foreach ($invoiceLineItems->LineItem as $invoiceLineItem) { 

    $description = $invoiceLineItem->Description; 
    $amount = $invoiceLineItem->UnitAmount; 
    $Code = $invoiceLineItem->AccountCode; 

    $xml = $xml->addChild('Line'); 
    $xml->addChild('Code', $Code); 
    $xml->addChild('Description', $description); 
    $xml->addChild('Amount', $amount); 

} 


// Save XML 
$xml->asXML(); 

$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($xml->asXML()); 
$dom->save($fileName); 

これは、.xmlファイルを生成しますが、それだけでループの最後のレコード、ループ内のすべてのレコードのない1のための単一

<Line> 
... 
</Line> 

を持っています。

答えて

0

更新されたので、ルート要素から、ここで新しく追加された子要素に$xml変数の値:

$xml = $xml->addChild('Line'); 

使用新しく追加された子要素参照する別の変数:また

$line = $xml->addChild('Line'); 
$line->addChild('Code', $Code); 
$line->addChild('Description', $description); 
$line->addChild('Amount', $amount); 

を、期待される最終的なXMLは整形式ではないため、適切なXMLパーサーを使用して通常生成することはできません。ルート<xml>はXMLを作成する必要があります。

関連する問題