SimpleXMLElement::asXML

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::asXML Return a well-formed XML string based on SimpleXML element

Опис

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

The asXML method formats the parent object's data in XML version 1.0.

Параметри

filename

If a string value is provided, the function writes the data to the file rather than returning it.

Значення, що повертаються

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.

Журнал змін

Версія Опис
8.0.0 filename is nullable now.

Приклади

Приклад #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();

?>

Поданий вище приклад виведе:

<?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:

Приклад #2 Using asXML() on SimpleXMLElement::xpath() results

<?php
// Continued from example XML above.

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

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

Поданий вище приклад виведе:

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

Прогляньте також

add a note

User Contributed Notes 2 notes

up
33
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
10
oleg dot pavlin at gmail dot com
12 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