У меня есть следующий код PHP:
<?php
$url = 'https://api.datamarket.azure.com/Data.ashx/opendata.rdw/VRTG.Open.Data/v1/KENT_VRTG_O_DAT(\'96TDR3\')';
$xml = simplexml_load_file($url);
print_r($xml);
?>
Выход:
SimpleXMLElement Object
(
[id] => https://api.datamarket.azure.com/Data.ashx/opendata.rdw/VRTG.Open.Data/v1/KENT_VRTG_O_DAT('96TDR3')
[category] => SimpleXMLElement Object
(
[@attributes] => Array
(
[term] => opendata.rdw.VRTG.Open.Data.KENT_VRTG_O_DAT
[scheme] => http://schemas.microsoft.com/ado/2007/08/dataservices/scheme
)
)
[link] => SimpleXMLElement Object
(
[@attributes] => Array
(
[rel] => edit
[title] => KENT_VRTG_O_DAT
[href] => KENT_VRTG_O_DAT('96TDR3')
)
)
[title] => SimpleXMLElement Object
(
)
[updated] => 2014-10-07T21:22:59Z
[author] => SimpleXMLElement Object
(
[name] => SimpleXMLElement Object
(
)
)
[content] => SimpleXMLElement Object
(
[@attributes] => Массив)
)
Когда я открываю ссылку прямо в браузере, я получаю больше контента. Что не так я здесь делаю?
Что не так я здесь делаю?
Это легко спутать при использовании print_r
или же var_dump
на SimpleXMLElement вывод с фактическим содержанием у вас есть внутри SimpleXMLElement объект.
Вместо
print_r($xml);
Вы должны использовать
echo $xml->asXML();
чтобы показать фактические данные XML, которые были загружены в SimpleXMLElement объект.
Если вы отобразите это в своем браузере, вы должны использовать просмотреть исходный код посмотреть это или же вам нужно сначала закодировать его в HTML:
echo '<pre>', htmlspecialchars($xml->asXML()), '</pre>';
Вы можете сравнить это с имеющимся у вас объектом, например, с базой данных:
$dbh = new PDO("mysql:host=$hostname;dbname=mysql", $username, $password);
print_r($dbh);
не будет показывать все содержимое базы данных тоже нет — даже она позволяет получить доступ ко всему содержимому базы данных.
Это потому что SimpleXMLElement а также PDO являются объекты и не array
или же stdClass
для которого var_dump
или же print_r
покажет все данные, которые они содержат.
Не уверен, что вы пытаетесь спросить здесь, но если в вашем коде нет ошибок. В браузере вывод должен выглядеть следующим образом:
SimpleXMLElement Object ([id] => https://api.datamarket.azure.com/Data.ashx/opendata.rdw/VRTG.Open.Data/v1/KENT_VRTG_O_DAT(’96TDR3′) [category] => Объект SimpleXMLElement ([@attributes] => Массив ([term] => opendata.rdw.VRTG.Open.Data.KENT_VRTG_O_DAT [схема] => http://schemas.microsoft.com/ado/2007/08/dataservices/scheme )) [link] => Объект SimpleXMLElement ([@attributes] => Массив ([rel] => edit [title] => KENT_VRTG_O_DAT [href] => KENT_VRTG_O_DAT (’96TDR3′))) [title] => Объект SimpleXMLElement () [обновлено] => 2014-10-07T21: 44: 15Z [author] => Объект SimpleXMLElement ([0] => Объект SimpleXMLElement ()) [content] => Объект SimpleXMLElement ([@attributes] => Массив ( [type] => application / xml)))
которая является ничем иным, как структурой XML-файла, который вы пытаетесь получить в своем URL, и ваш код именно так и делает. Если вы хотите стилизовать его, выберите конкретный дочерний узел.