CakeFest 2017 NYC, the Official CakePHP Conference


(PHP 5 >= 5.0.1, PHP 7)

SimpleXMLElement::asXML Retourne une chaîne XML basée sur un élément SimpleXML


public mixed SimpleXMLElement::asXML ([ string $filename ] )

Formate les données de l'objet parent en XML 1.0.

Liste de paramètres


Si spécifié, la fonction écrit les données au fichier au lieu de les retourner.

Valeurs de retour

Si le paramètre filename n'est pas spécifié, la fonction retourne une chaîne de caractères en cas de succès et FALSE en cas d'erreur. Si le paramètre est spécifié, elle retourne TRUE si le fichier a été écrit correctement et FALSE autrement.


Exemple #1 Obtenir du XML avec SimpleXML

= <<<XML

$xml = new SimpleXMLElement($string);



L'exemple ci-dessus va afficher :

<?xml version="1.0"?>

SimpleXMLElement::asXML() fonctionne aussi avec les résultats Xpath :

Exemple #2 Utilisation de SimpleXMLElement::asXML() avec les résultats de SimpleXMLElement::xpath()

// Suite de l'exemple plus haut.

/* On cherche <a><b><c> */
$result $xml->xpath('/a/b/c');

while(list( , 
$node) = each($result)) {

L'exemple ci-dessus va afficher :


Voir aussi

add a note add a note

User Contributed Notes 3 notes

andreas dot theissen at t-online dot de
4 years ago
To prevent asXML from encoding vowels unwantedly, simply use an approriate XML header with encoding in advance.

If you do so, asXML will happily leave your vowels (and the header) entirely untouched.


'<?xml version="1.0" encoding="UTF-8"?>
  <key lang="en">&lt;Insert&gt;</key>
  <key lang="de">&lt;Einfügen&gt;</key>

$sxe = new SimpleXMLElement($xmlstr);

$output = $sxe->asXML();


$xmlstr and $output are identical now.

The subsequent use of html_entity_decode() (as proposed in the very beginning in another post) has several drawbacks:

1. It is slow
2. It is expensive
3. If there are already encoded arrow brackets or double quotes in your source for instance (as shown in the above example), markup will be broken.
oleg dot pavlin at gmail dot com
5 years ago
Function asXML decodes special chars like ø, æ and others to &#xE6;, &#xF8;

To get normal output use without quoting:

$xml = html_entity_decode($xml, ENT_NOQUOTES, 'UTF-8');
jcr at di dot uminho dot pt
6 years ago
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">

I want to retrieve the counter attribute, increment it, and store the new document at the end:

= simplexml_load_file("mydoc.xml");
$cont = (integer) $document['counter'];
$document['counter'] = $cont+1;
To Top