0

我正在尝试使用 CURL 来获取与此 URL 关联的 XML 文件,然后我正在尝试使用 DOMxPath 解析 xml 文件。

此时没有输出错误,只是没有显示任何内容,我试图捕捉一些错误但我无法弄清楚,任何方向都会令人惊叹。

<?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;

}
?>
4

3 回答 3

0

似乎你试图捕捉一些不可用的 xpath,确保你有("//time");xml 文件,你确定你抓取的是一个 xml 文件吗?或者你只是放入 xml ?

于 2011-12-08T15:15:39.643 回答
0

您正在尝试将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
于 2011-12-08T15:18:38.857 回答
0

如果我们看那个页面,它似乎是由 javascript 生成的 xml,看看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=

也许你可以抓住那个

于 2011-12-09T04:34:50.860 回答