SimpleXMLElement->asXML

SimpleXMLElement->asXML -- Возвращает правильно сформированный XML-документ

Описание

mixed SimpleXMLElement->asXML ( [string filename] )

Метод asXML формирует данные в XML версии 1.0.

Список параметров
filename
Если указан, то метод запишет данные в указанный файл.
Возвращаемые значения
Если имя файла задано, то метод запишет XML данные в указанный файл. В противном случае метод возвратит XML-данные в виде строки.
Замечания
Если в исходном документе в заголовках была указана кодировка XML-документа при помощи параметра encoding, то метод asXML возвратит XML-документ в указанной кодировке. Изменение кодировки XML-документа при помощи расширения SIMPLEXML невозможно.
Примеры
Пример 1. Вывести XML

<?php 
$string = <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
</d></a>
XML;
$xml = simplexml_load_string($string);
echo $xml->asXML(); // <?xml ... <a><b><c>text</c><c>stuff</c>
...?>

Метод asXML также может работать с Xpath:

Пример 2. Использование метода asXML() в работе с Xpath

<?php 
// Продолжение примера, указанного выше.
/* Поиск <a><b><c> */
$result = $xml->xpath('/a/b/c');
while(list( , $node) = each($result)) {
echo $node->asXML(); // <c>text</c> и <c>stuff</c>
}
?>

SimpleXMLElement->attributes

SimpleXMLElement->attributes -- Возвращает атрибуты элемента.

Описание

SimpleXMLElement simplexml_element->attributes ( [string data] )

Эта функция возвращает названия и значения атрибутов выбранного xml-элемента. Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с испольванием var_dump() или каких-либо других средств анализа объектов.

Пример 1. Интепретация XML-строки

<?php 
$string = <<<XML
<users>
<user name="Evgen" age="27">admin@spravkaweb.ru</user>
</users>
XML;
$xml = simplexml_load_string($string);
foreach($xml->users[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
?>

Данный пример выведет:

name="Evgen"
age="27

SimpleXMLElement->children

SimpleXMLElement->children -- Возвращает дочерние элементы для заданного элемента

Описание

SimpleXMLElement simplexml_element->children ( [string nsprefix] )

Данный метод находит дочерние элементы для заданного элемента.

Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с использованием var_dump() или каких-либо других средств анализа объектов.

Пример 1. Использование метода children()

<?php 
$xml = simplexml_load_string(
'<sites>
<site name="php-spravka.ru">
<site name="links.php-spravka.ru" />
<site name="forum.php-spravka.ru" />
<site name="server.php-spravka.ru" />
</site>
<site name="yandex.ru">
<site name="money.yandex.ru" />
<site name="map.yandex.ru" />
<site name="market.yandex.ru" />
</site>
</sites>');
echo '<ul>';
foreach ($xml->children() as $site) {
echo '<dt>' . $site['name'];
foreach ($site->children() as $subsite) {
echo '<dd>' . $subsite['name'];
}
}
echo '</ul>';
?>

Данный пример выведет:

php-spravka.ru
links.php-spravka.ru
forum.php-spravka.ru
server.php-spravka.ruyandex.ru
money.yandex.ru
map.yandex.ru
market.yandex.ru

SimpleXMLElement->xpath

SimpleXMLElement->xpath -- Выполняет Xpath-запрос к XML-данным

Описание

array SimpleXMLElement->xpath ( string path )

Метод xpath ищет дочерние элементы элемента SimpleXML, путь к которому указан в параметре path. Метод возвращает массив объектов SimpleXMLElement.

Пример 1. Xpath

<?php 
$string = <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
<b>
<c>plain</c>
</b>
</d>
</a>
XML;
$xml = simplexml_load_string($string);
/* Поиск по <a><b><c> */
$result = $xml->xpath('/a/b/c');
foreach ($result as $node) {
echo '/a/b/c: ' . $node . '<BR>';
}
/* Относительные дорожки также работают ... */
$result = $xml->xpath('b/c');
foreach ($result as $node) {
echo 'b/c: ' . $node . '<BR>';
}
?>

Данный скрипт выведет:

/a/b/c: text
/a/b/c: stuffb/c: textb/c: stuff

Два результата в данном случае одинаковы.

simplexml_import_dom (PHP 5)

simplexml_import_dom -- Возвращает объект SimpleXMLElement, созданный из DOM-объекта.

Описание

SimpleXMLElement simplexml_import_dom ( DOMNode node [, string class_name] )

Данная функция берет объект DOM и создает на его основе объект SimpleXML.

Этот новый объект может быть использован как нормальный объект SimpleXML.

Если во время создания объекта произошли ошибки, метод вернет false.

Пример 1. Import DOM

<?php 
$dom = new domDocument;
$dom->loadXML('<sites><site><url>php-spravka.ru</url></site></sites>');
if (!$dom) {
echo 'Ошибка парсинга документа!';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->site[0]->url; // php-spravka.ru
?>

simplexml_load_file (PHP 5)

simplexml_load_file -- Интерпретирует XML-файл в объект

Описание

object simplexml_load_file ( string filename [, string class_name [, int options]] )

Эта функция интерпретирует файл filename с правильно сформированными XML-данными в объект SimpleXMLElement. Если в XML-данных имеются ошибки, функция возвратит FALSE.

Вы можете использовать необязательный параметр class_name в функции simplexml_load_file() для того, чтобы функция вернула объект указанного класса. При этом класс должен быть расширением класса SimpleXMLElement.

Начиная с PHP 5.1.0 и Libxml 2.6.0 вы можете использовать необязательный параметр options, спецификация которого описана в additional Libxml parameters.

Замечание: Libxml 2 преобразовывает URL к правильному виду. Т.е. если вы хотите присвоить переменной а значение b&c в URL-строке, вам не обязательно делать:

simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). 

Начиная с PHP 5.1.0 это делается в автоматическом режиме.

Пример 1. Интерпретация XML документа

<?php 
// Файл test.xml содержит XML документ с корневым элементом
// и вложенным элементом title /[root]/title.if (file_exists('test.xml')) {
$xml = simplexml_load_file('test.xml');

var_dump($xml);
} else {
exit('Ошибка открытия test.xml.');
}
?>
Этот пример выведет следующее: SimpleXMLElement Object(
[title] => Тестовый заголовок
...
)

В данном примере вы можете обратиться к элементу title следующим образом: $xml->title.

simplexml_load_string(PHP 5)

simplexml_load_string -- Интерпретирует строку с XML в объект

Описание

object simplexml_load_string ( string data [, string class_name [, int options]] )

Эта функция берет "правильный" XML-документ, находящийся в строке data и возвращает объект класса SimpleXMLElement, имеющий свойства, равные содержимому xml-документа. Если XML-документ имеет ошибки, функция возвратит FALSE.

Вы можете использовать необязательный параметр class_name для того, чтобы функция simplexml_load_string() вернула объект заданного класса. Этот класс должен расширять класс SimpleXMLElement.

Начиная с PHP 5.1.0 и Libxml 2.6.0, вы можете также использовать необязательный параметр options, содержимое которого определено в additional Libxml parameters.

Пример 1. Преобразование XML-строки

<?php 
$string = <<<XML
<?xml version='1.0'?>
<document>
<title>Forty What?</title>
<from>Joe</from>
<to>Jane</to>
<body>
I know that's the answer -- but what's the question?
</body>
</document>
XML;
$xml = simplexml_load_string($string);
var_dump($xml);
?>
Этот пример выведет: SimpleXMLElement Object(
[title] => Forty What?
[from] => Joe
[to] => Jane
[body] =>
I know that's the answer -- but what's the question?
)

В этом примере вы можете также использовать конструкции $xml->body и т.д.