Php – Prettifying/Formatting output in SimpleXML

formattingPHPsimplexml

I have this simplexml script i'm using to post data entered from a form.

$xml = simplexml_load_file("links.xml");

$sxe = new SimpleXMLElement($xml->asXML()); 

$person = $sxe->addChild("link");
$person->addChild("title", "Q: ".$x_title);
$person->addChild("url", "questions_layout.php#Question$id");

$sxe->asXML("links.xml"); 

and when it comes out it looks like this on one line:

<link><title>Alabama State</title><url>questions_layout.php#Question37</url></link><link><title>Michigan State</title><url>questions_layout.php#Question37</url></link></pages>

But i've tried the method found HERE and THIS AS WELL but neither format the XML correctly in the lines as they should be like

<link>
<title></title>
<url></url>
</link>

In the first reference link I even changed loadXML to load, because loadXML expects a string as XML. Can somebody help me find a solution to this please?

Best Answer

AFAIK simpleXML can't do it on its own.

However, DOMDocument can.

$dom = dom_import_simplexml($sxe)->ownerDocument;
$dom->formatOutput = TRUE;
$formatted = $dom->saveXML();