php - разбор XML-данных

Я работаю над получением некоторых XML-данных в переменную php, чтобы я мог легко вызвать их на моей html-странице. Я использую этот код ниже:

$ch      = curl_init();
$timeout = 5;

$url = "http://www.dictionaryapi.com/api/v1/references/collegiate/xml/define?key=0b03f103-f6a7-4bb1-9136-11ab4e7b5294";

$definition = simplexml_load_file($url);

echo $definition->entry[0]->def;

Однако мои результаты:

Я не уверен, что я делаю неправильно, и я следовал руководству по PHP, поэтому я предполагаю, что это что-то очевидное, но я просто не правильно понимаю.

Фактические результаты XML по этой ссылке, используемой в cURL, можно увидеть, щелкнув ссылку ниже, я не опубликовал ее, потому что она довольно длинная:

http://www.dictionaryapi.com/api/v1/references/sd3/xml/test?key=9d92e6bd-a94b-45c5-9128-bc0f0908103d

1 ответ

Решение
<?php
$ch = curl_init();
$timeout = 5;

$url = "http://www.dictionaryapi.com/api/v1/references/collegiate/xml/define?key=0b03f103-f6a7-4bb1-9136-11ab4e7b5294";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch); // you were missing a semicolon


$definition = new SimpleXMLElement($data);
echo '<pre>';
print_r($definition->entry[0]->def);
echo '</pre>';

// this returns the SimpleXML Object


// to get parts, you can do something like this...
foreach($definition->entry[0]->def[0] as $entry) {
    echo $entry[0] . "<br />";
}

// which returns

transitive verb
14th century
1 a
:to determine or identify the essential qualities or meaning of 
b
:to discover and set forth the meaning of (as a word)
c
:to create on a computer 
2 a
:to fix or mark the limits of : 
b
:to make distinct, clear, or detailed especially in outline 
3
: 
intransitive verb
:to make a 

Рабочая Демо

Другие вопросы по тегам