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 — Retourne une chaîne XML basée sur un élément SimpleXML
Description
Formate les données de l'objet parent en XML 1.0.
Liste de paramètres
-
filename -
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.
Exemples
Exemple #1 Obtenir du XML avec SimpleXML
<?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();
?>
L'exemple ci-dessus va afficher :
<?xml version="1.0"?> <a> <b> <c>text</c> <c>stuff</c> </b> <d> <c>code</c> </d> </a>
SimpleXMLElement::asXML() fonctionne aussi avec les résultats Xpath :
Exemple #2 Utilisation de SimpleXMLElement::asXML() avec les résultats de SimpleXMLElement::xpath()
<?php
// Suite de l'exemple plus haut.
/* On cherche <a><b><c> */
$result = $xml->xpath('/a/b/c');
while(list( , $node) = each($result)) {
echo $node->asXML();
}
?>
L'exemple ci-dessus va afficher :
<c>text</c><c>stuff</c>
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");
?>
