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']
.