PHP / SimpleXML не показывает весь контент

У меня есть следующий код 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] => Массив
(
[type] => application / xml
)

)

)

Когда я открываю ссылку прямо в браузере, я получаю больше контента. Что не так я здесь делаю?

0

Решение

Что не так я здесь делаю?

Это легко спутать при использовании 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 покажет все данные, которые они содержат.

1

Другие решения

Не уверен, что вы пытаетесь спросить здесь, но если в вашем коде нет ошибок. В браузере вывод должен выглядеть следующим образом:
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, и ваш код именно так и делает. Если вы хотите стилизовать его, выберите конкретный дочерний узел.

0

По вопросам рекламы [email protected]