2017-01-19 84 views
1

提交我知道有一噸的關於這個在這裏,但問題每一個答案,我想沒有固定我的問題保存格式化XML在PHP

問題

我已經XML保存在一個字符串,我想這樣保存到一個文件,但不希望xml在一個單一的行我想要寫入該文件在pritty打印

也有一個更大的問題,而不是這個"它顯示",因爲這個文件將被加載到一個不同的網站我不能擁有"

注意,$content變量""

我知道\n並不重要,但要使它更容易analize生成的XML文件,我需要的XML進行格式化

這是我在用

$dirname = "temp/" . uniqid(); 
mkdir($dirname); 

$filename = $dirname . "/gen.xml"; 

$doc = new DomDocument($content); 
$doc->preserveWhiteSpace = false; 
$doc->formatOutput = true; 
$doc->save($filename); 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Length: ". filesize("$filename").";"); 
header("Content-Disposition: attachment; filename=gen.xml"); 
header("Content-Type: application/octet-stream; "); 
header("Content-Transfer-Encoding: binary"); 

readfile($filename); 

$fh = fopen($filename, 'a'); 
fclose($fh); 
unlink($filename); 
rmdir($dirname); 

我也試過

header("Content-type: text/xml");file_put_contents

回答

2

DomDocumentconstructor不接受一個XML字符串 - 更確切地說,一個可選的版本和編碼。

你可能想要的是加載您$content XML字符串代替:

$doc = new DOMDocument(); 

$doc->preserveWhiteSpace = false; 
$doc->formatOutput = true; 
$doc->loadXML($content); 

$doc->save($filename);