PHP 7.0.6 Released

SimpleXMLElement::asXML

(PHP 5 >= 5.0.1, PHP 7)

SimpleXMLElement::asXML Retorna uma string XML bem formada (well-formed) baseada em um elemento SimpleXML

Descrição

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

O método asXML formata os dados dos objetos pais em XML de versão 1.0.

Parâmetros

filename

Se especificado, a função escreve os dados em um arquivo ao invés de retorná-lo.

Valor Retornado

Se o filename não for especificado, esta função retornará uma string no caso de sucesso, e FALSE no caso de erro. Se o parâmetro for especificado, retornará TRUE se o arquivo for escrito com sucesso, e FALSE caso contrário.

Exemplos

Exemplo #1 Recuperando o 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(); // <?xml ... <a><b><c>text</c><c>stuff</c> ...

?>

O exemplo acima irá imprimir:

<?xml version="1.0"?>
<a>
 <b>
  <c>text</c>
  <c>stuff</c>
 </b>
 <d>
  <c>code</c>
 </d>
</a>

O método asXML também funcionará em resultados Xpath:

Exemplo #2 Utilizando asXML() em resultados SimpleXMLElement::xpath()

<?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(); // <c>text</c> and <c>stuff</c>
}
?>

O exemplo acima irá imprimir:

<c>text</c><c>stuff</c>

Veja Também

add a note add a note

User Contributed Notes 4 notes

up
15
andreas dot theissen at t-online dot de
3 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.

<?php

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

$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.
up
3
oleg dot pavlin at gmail dot com
4 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');
up
-18
jcr at di dot uminho dot pt
5 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">
        <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");
?>
up
-22
vergisses at mailnesia dot com
1 year ago
This is dumb. It only shows you how to display pretty XML, not how to save it and have a pretty formatted XML file.
To Top