Выше было показано как работать с элементами 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.
Взаимодействие с DOMPHP имеет механизм конвертации 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-документа при помощи параметра
Примеры
Пример 1.
Вывести XML$string = <<
XML;
$xml = simplexml_load_string($string);
echo $xml->asXML(); //
?>