2013-02-21 59 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