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?
AFAIK simpleXML can't do it on its own.
However, DOMDocument can.
$dom = dom_import_simplexml($sxe)->ownerDocument;
$dom->formatOutput = TRUE;
$formatted = $dom->saveXML();
i think above accepted answer from stackoverflow authority did not solved above question.
Ref : [ I tried your answer and i received a Fatal error: Call to undefined method DOMElement::saveXML() on the line where the $formatted = $dom->saveXML();
$simplexml = simplexml_load_file("links.xml");
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simplexml->asXML());
$xml = new SimpleXMLElement($dom->saveXML());
$person = $xml->addChild("link");
$person->addChild("title", "Q: ".$x_title);
$person->addChild("url", "questions_layout.php#Question$id");
$xml->saveXML("links.xml");
this code worked for me and it's also pretty clean:
header('Content-type: text/xml');
echo $xml->asXML();
where $xml is a SimpleXMLElement - this code will print the XML in the following way
<Attribute>
<ChildAttribute>Value</ChildAttribute>
</Attribute>
This is taken from the official PHP documentation SimpleXMLElement::asXML
Hope this will help you!
来源:https://stackoverflow.com/questions/10133157/prettifying-formatting-output-in-simplexml