Php не читает данные XML - PullRequest
       1

Php не читает данные XML

3 голосов
/ 16 марта 2012

Здравствуйте, я получаю xml-ленту от expedia и пытаюсь проанализировать его на экране. Это не возвращение данных, и я не могу понять, почему. единственное, что вернёт это activePropertyCount. Вот URL, где я делаю это, если вы хотите посмотреть: http://travellinginmexico.com/test/index.php, а вот XML, который я пытаюсь проанализировать: http://travellinginmexico.com/test/data.xml

Мой код:

<?php 
$post_string = 'type=xml&cid=55505&minorRev=5&apiKey=4sr8d8bsn75tpcuja6ypx5g3&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/535.11+(KHTML,+like+Gecko)+Chrome/17.0.963.79+Safari/535.11&customerSessionId=&xml=<HotelListRequest><arrivalDate>04/05/2012</arrivalDate><departureDate>04/07/2012</departureDate><RoomGroup><Room><numberOfAdults>2</numberOfAdults></Room><Room><numberOfAdults>2</numberOfAdults><numberOfChildren></numberOfChildren></Room></RoomGroup><city>Cancun</city><countryCode>MX</countryCode><supplierCacheTolerance>MED_ENHANCED</supplierCacheTolerance></HotelListRequest> ';
$path = "http://api.ean.com/ean-services/rs/hotel/v3/list"; //Relative path to the file with $_POST parsing
$ch = curl_init($path); 
$fp = fopen('data.xml','w');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); //Send the data to the file
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml')); 
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FILE, $fp);
$val = curl_exec($ch);
curl_close($ch);//Close curl session
fclose($fp); //Close file overwrite

 $data = simplexml_load_file('data.xml');
    echo "<ul id=\"data\">\n";
    foreach ($data as $info):
        $title=$info->HotelList;
        $add=$info->address1;
        $count=$info['activePropertyCount'];
        echo "<li><div class=\"title\">",$title,"</div><div class=\"artist\">by ",$add,"</div><time>",$count,"</time></li>\n";
    endforeach;
    echo "</ul>";

?>

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Похоже, вы не пытаетесь извлечь ваши данные из правильной части объекта XML. Я обновил ваш код для чтения из раздела HotelList-> HotelSummary, и теперь он будет правильно отображать название и адрес отеля.

<code>//Use Curl to get XML here.

$data = simplexml_load_file('data.xml');

//Uncomment this to view the parsed XML on screen.
/*
echo '<pre>';
print_r($data->HotelList);
echo '
'; * / echo "
  • ", $ title, "
    by", $ add, "
";
0 голосов
/ 16 марта 2012

Рекомендую проверить libxml_get_errors.Есть довольно хороший пример того, как использовать его в документации PHP для функции.Он должен быть в состоянии сказать вам, какие проблемы возникают во время simplexml_load_file.

. Если вы думаете, что проблема возникла из-за cURL (или, если быть более точным), вы также можете использовать функции ошибок cURL.(Например, curl_error).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...