SimpleXMLElement::asXML
(PHP 5 >= 5.0.1)
SimpleXMLElement::asXML — Возвращает сформированный XML документ в виде строки используя SimpleXML элемент
Описание
Метод asXML задает формат данных родительских объектов в версии XML 1.0.
Список параметров
-
filename
-
Если указан, то функция запишет данные в файл, а не вернет их.
Возвращаемые значения
Если filename
не указан, то функция
вернет string в случае успеха и FALSE
в случае ошибки. Если
параметр указан, то функция вернет TRUE
если файл будет успешно записан и
FALSE
в противном случае.
Примеры
Пример #1 Получение XML
<?php
$string = <<<XML
<a>
<b>
<c>текст</c>
<c>штучка</c>
</b>
<d>
<c>код</c>
</d>
</a>
XML;
$xml = new SimpleXMLElement($string);
echo $xml->asXML();
?>
Результат выполнения данного примера:
<?xml version="1.0"?> <a> <b> <c>текст</c> <c>штучка</c> </b> <d> <c>код</c> </d> </a>
asXML также работает с результатами Xpath:
Пример #2 Использование asXML() с результатами SimpleXMLElement::xpath()
<?php
// Продолжение XML примера выше.
/* Поиск <a><b><c> */
$result = $xml->xpath('/a/b/c');
while(list( , $node) = each($result)) {
echo $node->asXML();
}
?>
Результат выполнения данного примера:
<c>текст</c><c>штучка</c>
- Функция SimpleXMLElement::addAttribute() - Добавляет атрибут к SimpleXML-элементу
- Функция SimpleXMLElement::addChild() - Добавляет дочерний элемент к узлу XML
- Функция SimpleXMLElement::asXML() - Возвращает сформированный XML документ в виде строки используя SimpleXML элемент
- Функция SimpleXMLElement::attributes() - Возвращает атрибуты элемента
- Функция SimpleXMLElement::children() - Поиск дочерних элементов данного узла
- Функция SimpleXMLElement::__construct() - Создание нового SimpleXMLElement объекта
- Функция SimpleXMLElement::count() - Считает количество дочерних элементов у текущего элемента
- Функция SimpleXMLElement::getDocNamespaces() - Возвращает объявленное пространство имен в документе
- Функция SimpleXMLElement::getName() - Получение имени XML элемента
- Функция SimpleXMLElement::getNamespaces() - Получение пространств имен, используемых в документе
- Функция SimpleXMLElement::registerXPathNamespace() - Создает префикс/пространство имен контекста для следующего XPath запроса
- Функция SimpleXMLElement::saveXML() - Псевдоним SimpleXMLElement::asXML
- Функция SimpleXMLElement::__toString() - Returns the string content
- Функция SimpleXMLElement::xpath() - Запускает XPath запрос к XML данным
Коментарии
Function asXML decodes special chars like ø, æ and others to æ, ø
To get normal output use without quoting:
$xml = html_entity_decode($xml, ENT_NOQUOTES, 'UTF-8');
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"><Insert></key>
<key lang="de"><Einfügen></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.