PHP 8.5.0 Alpha 1 available for testing

SimpleXMLElement::asXML

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::asXML Devuelve un string basado en un elemento SimpleXML

Descripción

public SimpleXMLElement::asXML(?string $filename = null): string|bool

Formatea los datos del objeto padre en XML 1.0.

Parámetros

filename

Si se especifica un string, la función escribe los datos al fichero en lugar de devolverlos.

Valores devueltos

Si el parámetro filename no está especificado, la función devuelve un string en caso de éxito y false en caso de error. Si el parámetro está especificado, devuelve true si el fichero ha sido escrito correctamente y false en otro caso.

Historial de cambios

Versión Descripción
8.0.0 filename ahora es nullable.

Ejemplos

Ejemplo #1 Obtener XML con 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();

?>

El resultado del ejemplo sería:

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

SimpleXMLElement::asXML() también funciona con los resultados Xpath:

Ejemplo #2 Uso de SimpleXMLElement::asXML() con los resultados de SimpleXMLElement::xpath()

<?php
$string
= <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
</d>
</a>
XML;

$xml = new SimpleXMLElement($string);

/* Se busca <a><b><c> */
$result = $xml->xpath('/a/b/c');

foreach (
$result as $node) {
echo
$node->asXML();
}
?>

El resultado del ejemplo sería:

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

Ver también

add a note

User Contributed Notes 2 notes

up
36
andreas dot theissen at t-online dot de
12 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
9
oleg dot pavlin at gmail dot com
13 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');
To Top