SimpleXMLElement::asXML

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::asXMLGibt einen wohlgeformten XML String zurück, der auf einem SimpleXML-Element basiert

Beschreibung

public SimpleXMLElement::asXML ( string $filename = ? ) : mixed

Die asXML Methode formatiert den Inhalt des Elternobjekts als XML Version 1.0.

Parameter-Liste

filename

Sofern angegeben, schreibt die Funktion die Daten in das File anstatt sie direkt zurück zu geben.

Rückgabewerte

Ist der Parameter filename nicht angegeben, gibt die Funktion einen String bei erfolgreicher Umwandlung oder false bei einem Fehler zurück. Ist der Parameter angegeben, wird true zurückgegeben, wenn die Datei erfolgreich erstellt werden konnte; ansonsten ist der Rückgabewert false.

Beispiele

Beispiel #1 XML erstellen

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

$xml = new SimpleXMLElement($string);

echo 
$xml->asXML();

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

asXML lässt sich ebenfalls auf Xpath-Ergebnisse anwenden:

Beispiel #2 Anwendung von asXML() auf SimpleXMLElement::xpath()-Ergebnisse

<?php
// Fortsetzung des obigen Beispiels

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

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Siehe auch

add a note add a note

User Contributed Notes 3 notes

up
30
andreas dot theissen at t-online dot de
11 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
7
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');
up
-55
jcr at di dot uminho dot pt
13 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");
?>
To Top