Function asXML decodes special chars like ø, æ and others to æ, ø
To get normal output use without quoting:
$xml = html_entity_decode($xml, ENT_NOQUOTES, 'UTF-8');
SimpleXMLElement::asXML
(PHP 5 >= 5.0.1)
SimpleXMLElement::asXML — Return a well-formed XML string based on SimpleXML element
Description
The asXML method formats the parent object's data in XML version 1.0.
Parameters
-
filename -
If specified, the function writes the data to the file rather than returning it.
Return Values
If the filename isn't specified, this function
returns a string on success and FALSE on error. If the
parameter is specified, it returns TRUE if the file was written
successfully and FALSE otherwise.
Examples
Example #1 Get XML
<?php
$string = <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
</d>
</a>
XML;
$xml = new SimpleXMLElement($string);
echo $xml->asXML();
?>
The above example will output:
<?xml version="1.0"?> <a> <b> <c>text</c> <c>stuff</c> </b> <d> <c>code</c> </d> </a>
asXML also works on Xpath results:
Example #2 Using asXML() on SimpleXMLElement::xpath() results
<?php
// Continued from example XML above.
/* Search for <a><b><c> */
$result = $xml->xpath('/a/b/c');
while(list( , $node) = each($result)) {
echo $node->asXML();
}
?>
The above example will output:
<c>text</c><c>stuff</c>
oleg dot pavlin at gmail dot com
10-Jan-2012 01:17
jcr at di dot uminho dot pt
25-Jan-2011 11:32
Code snippet to load a XML document, increment an attribute and store it again.
My XML looks like:
<?xml version="1.0" encoding="ISO-8859-1"?>
<doctypes counter="16">
<doctype id="d1">
<name>Carta</name>
<acro>CA</acro>
</doctype>
...
</doctypes>
I want to retrieve the counter attribute, increment it, and store the new document at the end:
<?php
$document = simplexml_load_file("mydoc.xml");
$cont = (integer) $document['counter'];
$document['counter'] = $cont+1;
$document->asXML("mydoc.xml");
?>
