Читаем Справочник по PHP полностью

Выше было показано как работать с элементами XML-документа и их значениями. SimpleXML также имеет доступ к атрибутам элементов. Атрибуты указанного элемента доступны как ассоциативный массив данного элемента.

include 'example.php';


$xml = simplexml_load_string($xmlstr);


/* Получение доступа к атрибутам элементов <rating> для первого кино.*/

foreach ($xml->movie[0]->rating as $rating) {

switch((string) $rating['type']) { // Возвращает атрибуты как элементы массива

case 'thumbs':

echo $rating, ' thumbs up';

break;

case 'stars':

echo $rating, ' stars';

break;

}

}

?>

Пример 5. Сравнение элементов и их атрибутов с текстовыми значениями

Для того, чтобы сравнивать элемент или атрибут со строковыми значениями, или передавать содержание элемента или атрибута в функцию, которая использует строковое значение передаваемого параметра, вы должны использовать элементы и атрибуты как строки с признаком (string). В противном случае PHP воспримет передаваемое значение как объект.



include 'example.php';


$xml = simplexml_load_string($xmlstr);


if ((string) $xml->movie->title == 'PHP: Behind the Parser') {

print 'Мой любимый фильм.';

}


htmlentities((string) $xml->movie->title);

?>

Пример 6. Использование Xpath

В SimpleXML включена поддержка запросов Xpath. Поиск всех элементов :



include 'example.php';

$xml = simplexml_load_string($xmlstr);


foreach ($xml->xpath('//character') as $character) {

echo $character->name, ' съиграл ', $character->actor, '<br />';

}

?>

'//' служит групповым символом. Чтобы задать абсолютный путь, требуется убрать один слеш.

Пример 7. Задание новых значений

Данные в SimpleXML не могут быть постоянными. Объект учитывает изменения всех его элементов.



include 'example.php';

$xml = simplexml_load_string($xmlstr);


$xml->movie[0]->characters->character[0]->name = 'Miss Coder';


echo $xml->asXML();

?>

Результатом вышеуказанного примера будет новый XML-документ, идеентичный оригиналу за исключением того, что в новом XML-документе будет вместо Ms. Coder будет Miss Coder.

Пример 8. Взаимодействие с DOM

PHP имеет механизм конвертации XML-документов из формата SimpleXML в DOM и обратно. Следующий пример показывает как конвертировать DOM-элемент в SimpleXML-элемент:

$dom = new domDocument;

$dom->loadXML('<books><book><title>blah</title></book></books>');

if (!$dom) {

echo 'Ошибка преобразования документа';

exit;

}


$s = simplexml_import_dom($dom);


echo $s->book[0]->title;

?>


Содержание:


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

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

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

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

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

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

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

asXML


SimpleXMLElement-asXML


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


Описание


mixed SimpleXMLElement->asXML ( [string filename] )

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


Список параметров



Возвращаемые значения


Если имя файла задано, то метод запишет XML данные в указанный файл. В противном случае метод возвратит XML-данные в виде строки.


Замечания


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


Примеры


Пример 1. Вывести XML

$string = <<

text

stuff

code

XML;


$xml = simplexml_load_string($string);


echo $xml->asXML(); // textstuff ...


?>

Перейти на страницу:

Похожие книги