2009-12-03 58 views
5

我用PHP的简单XML创建了一个XML文件,保存了该文件。在php中使用fopen打开文件并打印内容时。我的XML看起来像这样:(看下面):PHP SimpleXML新行

<?xml version="1.0" encoding="UTF-8"?> 
<home><orderList><delivery_cost>0.00</delivery_cost><delivery_surname>TEST</delivery_surname><delivery_postcode>1234</delivery_postcode><status>1</status></orderList></home> 

我想xml文件查看所有缩进和每个元素的新行。有人知道怎么做这个吗?

感谢

+0

如何保存XML文件? – 2009-12-03 14:26:01

回答

10

可以使用的DOMDocumentformatOutput属性做到这一点。

保存这样的XML相反,假设你的XML是在一个名为$yourXML变量,并希望将其保存到一个文件中$xmlFilePath:从here适应

$dom = new DOMDocument(); 
$dom->loadXML($yourXML); 
$dom->formatOutput = true; 
$formattedXML = $dom->saveXML(); 

$fp = fopen($xmlFilePath,'w+'); 
fwrite($fp, $formattedXML); 
fclose($fp); 

代码。

+0

哦,太好了!我不知道DOMDocument可以做到这一点...... – ChronoFish 2009-12-03 14:32:07

+0

您也可以将您的SimpleXML对象中的dom表示形式导入DOMElement/DOMDocument对象,并在DOMDocument对象上设置formatOutput属性。这样你就不必重新解析xml字符串。请参阅 VolkerK 2009-12-03 14:36:58

+1

'formatOutput'的问题是它只会在你没有任何文本节点时才起作用。 IOW,如果两个节点之间甚至有一个换行符,它将不会尝试对输出进行美化。 – 2009-12-03 15:00:20

2

这被称为“漂亮打印”,SimpleXML不这样做。如果您在Stack Overflow和网络上的其他地方搜索,您会发现可以做到这一点的自定义解决方案。

漂亮的印刷很适合视觉效果,但我不建议以这种格式保存文档

如果你还在寻找一个漂亮的打印机,你可以尝试SimpleDOM的asPrettyXML()

include 'SimpleDOM.php'; 

$home = simpledom_load_string('<?xml version="1.0" encoding="UTF-8"?> 
<home><orderList><delivery_cost>0.00</delivery_cost><delivery_surname>TEST</delivery_surname><delivery_postcode>1234</delivery_postcode><status>1</status></orderList></home>'); 

echo $home->asPrettyXML(); 
-3

回声 “\ n”;对于xml中的新行

ob_start();回声' '。 “\ n”;?>