[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: парсинг XML
vergin
Здравствуйте. Столкнулся с такой проблемой при парсинге XML.
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;

Но все тщетно ((

Спустя 22 минуты, 59 секунд (5.05.2011 - 17:23) vergin написал(а):
разобрался. Нужна конструкция $birthday = $item->{'birth-date'};
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.