XML имеет такую структуру:
<?xml version="1.0" encoding="UTF-8"?>
<response xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
<title>Title</title>
<descr>Description</descr>
<sy:update>monthly</sy:update>
</response>
Парсинг осуществляю с помощью simplexml_load_string(), обращаюсь к узлам используя xPath.
$data = '<?xml version="1.0" encoding="UTF-8"?>
<response xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
<title>Title</title>
<descr>Description</descr>
<sy:update>monthly</sy:update>
</response>';
$xml = simplexml_load_string($data);
$xmlObjects = $xml->xpath("//response");
foreach($xmlObjects as $item)
{
if(isset($item->title))
$title = $item->title;
if(isset($item->descr))
$descr = $item->descr;
}
И когда дохожу до парсинга узла с другим пространством имен (<sy:update>) - впадаю в ступор, не могу сообразить, как к нему обратиться
Спустя 32 минуты, 23 секунды (5.05.2011 - 15:24) Mirexzpalich написал(а):
print_r($item); поможет
Спустя 1 час, 36 минут, 34 секунды (5.05.2011 - 17:00) vergin написал(а):
с префиксами вроде-как разобрался, но возникла очередная проблема: например, если добавить в структуру XML узел с таким именем <birth-date>11.12.1986</birth-date>, или же вместо дефиса в названии узла используется, например точка, тильда и т.д. Обратиться к узлу вот так я не могу
$birthday = $item->birth-date;
Испробовал разные варианты:
$birthday = $item["birth-date"];
$birthday = $item->birthDate;
Но все тщетно ((
$birthday = $item->birth-date;
Испробовал разные варианты:
$birthday = $item["birth-date"];
$birthday = $item->birthDate;
Но все тщетно ((
Спустя 22 минуты, 59 секунд (5.05.2011 - 17:23) vergin написал(а):
разобрался. Нужна конструкция $birthday = $item->{'birth-date'};