Statement on glibc/iconv Vulnerability

SimpleXMLElement::asXML

(PHP 5, PHP 7, PHP 8)

SimpleXMLElement::asXMLNesnenin içerdiği belgeyi iyi biçemli bir XML dizge olarak döndürür

Açıklama

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

Nesnenin içerdiği belgeyi iyi biçemli bir XML 1.0 dizgesi olarak döndürür.

Bağımsız Değişkenler

dosya

Dizge değer belirtildiği takdirde, sonuç döndürülmeyip bu dosyaya yazılır.

Dönen Değerler

Eğer dosya belirtilmezse fakat bir hata oluşursa false aksi takdirde bir dizge döner. Eğer dosya belirtilir ve dosyaya başarıyla yazılırsa true aksi takdirde false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 dosya artık null olabiliyor.

Örnekler

Örnek 1 - XML belgenin döndürülmesi

<?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();

?>

Yukarıdaki örneğin çıktısı:

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

asXML Xpath sonuçları üzerinde de çalışır:

Örnek 2 - SimpleXMLElement::xpath() sonucundan bir XML belge döndürmek

<?php
// Yukarıdaki örneğin devamıdır.

/* <a><b><c>'yi arayalım */
$result = $xml->xpath('/a/b/c');

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

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

add a note

User Contributed Notes 2 notes

up
33
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
8
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