开发者

PHP SimpleXML new line

开发者 https://www.devze.com 2022-12-13 07:51 出处:网络
I have created a XML file using PHP\'s simple XML, saved the file. When opening the file in php using fopen and printing the contents. my XML looks like this: (see below)

I have created a XML file using PHP's simple XML, saved the file. When opening the file in php using fopen and printing the contents. my XML looks like this: (see below)

<?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></h开发者_开发问答ome>

I want the xml file looking all indented and on new lines for each element. Does anybody know how to do this?

Thanks


You can do this using the formatOutput property of DOMDocument.

Save your XML like this instead, presuming your XML is in a variable called $yourXML, and you want to save it to a file at $xmlFilePath:

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

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

Code adapted from here.


This is called "pretty printing" and SimpleXML does not do that. If you search on Stack Overflow and elsewhere on the web you'll find custom solutions that do that.

Pretty printing is good for visulation but I don't recommend saving documents in that format.

If you're still looking for a pretty-printer, you can try SimpleDOM's 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();


echo "\n"; for new line in xml

ob_start(); echo ' ' . "\n";?>

0

精彩评论

暂无评论...
验证码 换一张
取 消