CURL, чтобы получить файл XML, связанный с этим URL - PullRequest
0 голосов
/ 08 декабря 2011

Я пытаюсь использовать CURL, чтобы получить файл XML, связанный с этим URL, затем я пытаюсь проанализировать файл XML с помощью DOMxPath.

На данный момент нет ошибок вывода, просто ничего не отображается, я пытался отловить некоторые ошибки, но не смог разобраться, любое направление было бы удивительным.

<?php
if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }

function tideTime() {


$ch = curl_init("http://tidesandcurrents.noaa.gov/noaatidepredictions/NOAATidesFacade.jsp?datatype=XML&Stationid=8721138");
$fp = fopen("8721138.xml", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);

curl_close($ch);
fclose($fp);

$dom = new DOMDocument();
@$dom->loadHTML($ch);
$domx = new DOMXPath($dom);
$entries = $domx->evaluate("//time");

$arr = array();
foreach ($entries as $entry) {

  $tide = $entry->nodeValue;

}
echo $tide;

}
?>

Ответы [ 3 ]

0 голосов
/ 08 декабря 2011

Вы пытаетесь загрузить дескриптор ресурса curl как DOM, которым он не является.функции curl либо выводят напрямую, либо выводят в строку.

$ch = curl_init("http://tidesandcurrents.noaa.gov/noaatidepredictions/NOAATidesFacade.jsp?datatype=XML&Stationid=8721138");
$fp = fopen("8721138.xml", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

$data = curl_exec($ch);
curl_close($ch);
fclose($fp);
$dom = new DomDocument();
$dom->loadHTML($data);
// the rest of the code
0 голосов
/ 09 декабря 2011

если мы посмотрим на эту страницу, кажется, xml сгенерирован javascript, посмотрите на http://tidesandcurrents.noaa.gov/noaatidepredictions/NOAATidesFacade.jsp?datatype=XML&Stationid=8721138&text=datafiles%2F8721138%2F09122011%2F877%2F&imagename=images/8721138/09122011/877/8721138_2011-12-10.gif&bdate=20111209&timelength=daily&timeZone=2&dataUnits=1&interval=&edate=20111210&StationName=Ponce Inlet, Halifax River&Stationid_=8721138&state=FL&primary=Subordinate&datum=MLLW&timeUnits=2&ReferenceStationName=GOVERNMENT CUT, MIAMI HARBOR ENTRANCE&HeightOffsetLow=*1.00&HeightOffsetHigh=* 1.18&TimeOffsetLow=33&TimeOffsetHigh=5&pageview=dayly&print_download=true&Threshold=&thresholdvalue=

, может быть, вы можете взять это

0 голосов
/ 08 декабря 2011

кажется, вы пытаетесь перехватить какой-то недоступный xpath, убедитесь, что в файле xml есть ("//time");, вы уверены, что захватили файл xml? или вы просто кладете в xml?

...