2013-02-21 58 views
0

後,所以我有這樣的代碼PHP的XML DOM生成與換行符XML重啓

$domDoc = new DOMDocument; 
$rootElt = $domDoc->createElement('CONFIG'); 
$rootNode = $domDoc->appendChild($rootElt); 

$subElt = $domDoc->createElement('APP-ID'); 
$subNode = $rootNode->appendChild($subElt); 

$textNode = $domDoc->createTextNode('166533e56'); 
$subNode->appendChild($textNode); 

$domDoc->save('config.xml'); 

這產生

<CONFIG><APP-ID>166533e56</APP-ID></CONFIG> 

這是不換行。 當我添加

$domDoc->formatOutput = true; 

之前代碼的最後一行

$domDoc->save('config.xml'); 

輸出是現在罰款:

<CONFIG> 
    <APP-ID>166533e56</APP-ID> 
</CONFIG> 

然而,當我在另一個PHP嘗試打開XML,寫無論我嘗試什麼,它都附帶了無格式的東西。

在另一個PHP代碼我做的:

$domDoc = new DOMDocument; 
$domDoc->load('config.xml'); 

$rootNode = $domDoc->documentElement; 
$config_root = $rootNode->getElementsByTagName("CONFIG"); 

$rootElt = $domDoc->createElement('USER-ID'); 
$subNode = $rootNode->appendChild($rootElt); 

$textNode = $domDoc->createTextNode('333265332f'); 
$subNode->appendChild($textNode); 

$rootElt = $domDoc->createElement('USER-NAME'); 
$sub2Node = $rootNode->appendChild($rootElt); 

$textNode = $domDoc->createTextNode('John'); 
$sub2Node->appendChild($textNode); 

$domDoc->formatOutput = true; 
$domDoc->save('config.xml');  

導致

<CONFIG> 
    <APP-ID>166533e56</APP-ID> 
<USER-ID>333265332f</USER-ID><USER-NAME>John</USER-NAME></CONFIG> 

這是完全錯誤的。它應該是

<CONFIG> 
    <APP-ID>166533e56</APP-ID> 
    <USER-ID>333265332f</USER-ID> 
    <USER-NAME>John</USER-NAME> 
</CONFIG> 

爲什麼換行符尚未添加?我做錯了什麼?

回答

1

$domDoc->preserveWhiteSpace = false;之前加載文件:

$domDoc = new DOMDocument; 
$domDoc->preserveWhiteSpace = false;// <-- this line 
$domDoc->loadXML(<<<XML 
<?xml version="1.0"?> 
<CONFIG> 
    <APP-ID>166533e56</APP-ID> 
</CONFIG> 
XML 
); 

$rootNode = $domDoc->documentElement; 
$config_root = $rootNode->getElementsByTagName("CONFIG"); 

$rootElt = $domDoc->createElement('USER-ID'); 
$subNode = $rootNode->appendChild($rootElt); 

$textNode = $domDoc->createTextNode('333265332f'); 
$subNode->appendChild($textNode); 

$rootElt = $domDoc->createElement('USER-NAME'); 
$sub2Node = $rootNode->appendChild($rootElt); 

$textNode = $domDoc->createTextNode('John'); 
$sub2Node->appendChild($textNode); 

$domDoc->formatOutput = true; 
//$domDoc->save('config.xml');  
echo $domDoc->saveXML(); 

Live demo

+0

#{$!有用!男人謝謝你10倍我已經搞清楚了2個小時了! – 2013-02-21 10:24:36