Intereting Posts
Выпадающее меню php multiple с одинаковым именем не может получить значение Взаимодействие приложений Android с сетью Заблокированный запятой множественный автозаполнение в одном поле Отражает ли идея идеи частных методов, потому что частные методы могут быть доступны за пределами класса? Ошибка FOSFacebookBundle после входа в систему. Контроллер должен вернуть ответ (null) Phpmailer с использованием smtp с Gmail не работает – время подключения Скопировать массив PHP в массив javascript Предложения для шлюза, пожалуйста создание изображения в php, отображение работы, сохранение в файл не Как вы имеете дело с ', одинарная цитата в именах человека в php, javascript Как загрузить файл с помощью PHP и Mysql DB PHP ищет несколько строк в базе данных CodeIgniter – доступ к переменной $ config $ не определен в JQuery Как я могу отправить уведомление Firebase Cloud Messaging без использования Firebase Console?

PHP SimpleXML + Получить атрибут

XML, который я читаю, выглядит так:

<show id="8511"> <name>The Big Bang Theory</name> <link>http://www.tvrage.com/The_Big_Bang_Theory</link> <started>2007-09-24</started> <country>USA</country> <latestepisode> <number>05x23</number> <title>The Launch Acceleration</title> </latestepisode> </show> 

Чтобы получить (например) номер последнего эпизода, я бы сделал:

 $ep = $xml->latestepisode[0]->number; 

Это прекрасно работает. Но что бы я сделал, чтобы получить идентификатор из <show id="8511"> ?

Я пробовал что-то вроде:

 $id = $xml->show; $id = $xml->show[0]; 

Но никто не работал.

Обновить

Мой фрагмент кода:

 $url = "http://services.tvrage.com/feeds/episodeinfo.php?show=".$showName; $result = file_get_contents($url); $xml = new SimpleXMLElement($result); //still doesnt work $id = $xml->show->attributes()->id; $ep = $xml->latestepisode[0]->number; echo ($id); 

Ori. XML:

 http://services.tvrage.com/feeds/episodeinfo.php?show=The.Big.Bang.Theory 

Это должно сработать.

 $id = $xml["id"]; 

Ваш корень XML становится корнем объекта SimpleXML; ваш код вызывает chid root по имени 'show', которого не существует.

Вы также можете использовать эту ссылку для некоторых обучающих программ: http://php.net/manual/en/simplexml.examples-basic.php

Вам нужно использовать атрибуты

Я считаю, что это должно работать

 $id = $xml->show->attributes()->id; 

Это должно сработать. Вам нужно использовать атрибуты с типом (если используется значение sting value (string))

 $id = (string) $xml->show->attributes()->id; var_dump($id); 

Или это:

 $id = strip_tags($xml->show->attributes()->id); var_dump($id); 

Для получения attributes() необходимо использовать attributes() .

 $id = $xml->show->attributes()->id; 

Вы также можете сделать это:

 $attr = $xml->show->attributes(); $id = $attr['id']; 

Или вы можете попробовать следующее:

 $id = $xml->show['id']; 

Посмотрев на редактирование вашего вопроса ( <show> – ваш корневой элемент), попробуйте следующее:

 $id = $xml->attributes()->id; 

ИЛИ

 $attr = $xml->attributes(); $id = $attr['id']; 

ИЛИ

 $id = $xml['id']; 

попробуй это

 $id = (int)$xml->show->attributes()->id; 

Вам нужно правильно отформатировать свой XML и дать ему возможность ознакомиться с использованием <root></root> или <document></document> . См. XML-спецификацию и примеры по адресу http://php.net/manual/en/function .simplexml-нагрузки string.php

 $xml = '<?xml version="1.0" ?> <root> <show id="8511"> <name>The Big Bang Theory</name> <link>http://www.tvrage.com/The_Big_Bang_Theory</link> <started>2007-09-24</started> <country>USA</country> <latestepisode> <number>05x23</number> <title>The Launch Acceleration</title> </latestepisode> </show> </root>'; $xml = simplexml_load_string ( $xml ); var_dump ($xml->show->attributes ()->id); 

После правильной загрузки xml-файла с помощью SimpleXML objecto вы можете сделать print_r($xml_variable) и вы можете легко найти, к каким атрибутам вы можете получить доступ. Как говорили другие пользователи, для меня также работал $xml['id'] .