2013-09-30 84 views
1

我做了一個PHP腳本,通過添加新節點來更新現有的XML文件。問題是新節點沒有格式化。他們寫在一行。這裏是我的代碼:沒有格式化的附加節點

$file = fopen('data.csv','r'); 
$xml = new DOMDocument('1.0', 'utf-8'); 
$xml->formatOutput = true; 

$doc = new DOMDocument(); 
$doc->loadXML(file_get_contents('data.xml')); 
$xpath = new DOMXPath($doc); 
$root = $xpath->query('/my/node'); 
$root = $root->item(0); 
$root = $xml->importNode($root,true); 

// all the tags created in this loop are not formatted, and written in a single line 
while($line=fgetcsv($file,1000,';')){ 
    $tag = $xml->createElement('cart'); 
    $tag->setAttribute('attr1',$line[0]); 
    $tag->setAttribute('attr2',$line[1]); 
    $root->appendChild($tag); 
} 
$xml->appendChild($root); 
$xml->save('updated.xml'); 

我該如何解決這個問題?

回答

2

嘗試將preserveWhiteSpace = FALSE;添加到存儲文件的DOMDocument對象。

$xml = new DOMDocument('1.0', 'utf-8'); 
$xml->formatOutput = true; 

$doc = new DOMDocument(); 
$doc->preserveWhiteSpace = false; 
$doc->loadXML(file_get_contents('data.xml')); 
$doc->formatOutput = true; 

... 

PHP.net - DOMDocument::preserveWhiteSpace

+0

謝謝,但沒有奏效。 –

+0

答覆已更新。對不起,我把它叫做錯誤的DOM對象。在加載文件的對象上設置「preserveWhiteSpace = false」(我想應該在加載之前),你應該沒問題。 –

+0

是的,它做到了。謝謝。 –