Выбрать главу

Примеры

Пример 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>

}

?>

attributes

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

children

SimpleXMLElement-children

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

Описание

SimpleXMLElement simplexml_element->children ( [string nsprefix] )

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

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

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

<?php

$xml = simplexml_load_string(

'<sites>

<site name="spravkaweb.ru">

<site name="links.spravkaweb.ru" />

<site name="forum.spravkaweb.ru" />

<site name="server.spravkaweb.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>';

?>

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

spravkaweb.ru links.spravkaweb.ru forum.spravkaweb.ru server.spravkaweb.ruyandex.ru money.yandex.ru map.yandex.ru market.yandex.ru

xpath

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

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>spravkaweb.ru</url></site></sites>');

if (!$dom) {

echo 'Ошибка парсинга документа!';

exit;

}

$s = simplexml_import_dom($dom);

echo $s->site[0]->url; // spravkaweb.ru

?>

simplexml_load_file

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 это делается в автоматическом режиме.