Работа с XML-данными в php
Table of Contents
Если на сервере стоит версия php >= 5.0 (а сложно представить другое;)), то удобнее всего пользоваться классом SimpleXML.
Здесь я опишу работу с ним.
Создание объекта
2 основных способа — через конструктор и через factory-функцию simplexml_load_string.
Второй способ лучше тем, что при ошибке создания объекта вернёт false.
Правда, при этом будет выдавать E_WARNING, что не очень приятно.
Но есть способ побороться с этим — использовать функцию http://www.php.net/manual/en/function.libxml-use-internal-errors.php, которая запрещает вывод ошибок при парсинге XML-данных и позволяет приложению управляться с ними самому.
Соответственно, создание объекта SimpleXML можно реализовать так:
<?php
public static function parse2Obj($xmlString)
{
libxml_use_internal_errors(true);
$xmlObj = @simplexml_load_string($xmlString);//на всякий случай;)
if ($xmlObj === false)
return false;
return $xmlObj;
}
Дальнейшая работа с данными
Далее нужно обработать полученные данные.
Здесь всё достаточно просто: каждый из XML-нодов представляет теперь объект класса SimpleXML.
Т.е. к любому узлу можно обратиться примерно так:
$xml->movie[0]->plot;
При этом если используются спецсимволы в «имени свойства», то можно сделать так:
$xml->movie->{'great-lines'}->line;
Для нескольких дочерних элементов можно использовать циклы
foreach ($xml->movie as $movie)
{
echo $movie->plot, '<br />';
}
При этом, правда, есть нюансы — к примеру, неправильно отрабатывает count($xml->movie).
Для нормальной работы необходимо использовать метод children (странное название):
$t = $xml->movie->children();
foreach ($t as $movie)
{
echo $movie->plot, '<br />;
}
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.