我正在调用一个API,它有一堆XML格式的数据,这里有一堆XML数据:
<time from="2016-08-19T15:00:00" to="2016-08-19T18:00:00">
<symbol number="802" name="scattered clouds" var="03d"/>
<precipitation/>
<windDirection deg="196.501" code="SSW" name="South-southwest"/>
<windSpeed mps="2.16" name="Light breeze"/>
<temperature unit="celsius" value="28" min="27.75" max="28"/>
<pressure unit="hPa" value="994.95"/>
<humidity value="89" unit="%"/>
<clouds value="scattered clouds" all="32" unit="%"/>
</time>
<time from="2016-08-19T18:00:00" to="2016-08-19T21:00:00">
<symbol number="500" name="light rain" var="10d"/>
<precipitation unit="3h" value="2.999" type="rain"/>
<windDirection deg="235.003" code="SW" name="Southwest"/>
<windSpeed mps="3.06" name="Light breeze"/>
<temperature unit="celsius" value="26.06" min="25.87" max="26.06"/>
<pressure unit="hPa" value="993.86"/>
<humidity value="88" unit="%"/>
<clouds value="scattered clouds" all="48" unit="%"/>
</time>
还有很多,但这就是我从API请求中获取的内容。我只想从=“.... 00:00:00”拉出“温度值”,这是一个例子:
<time from="2016-08-20T00:00:00" to="2016-08-20T03:00:00">
我想从这个XML块中提取温度值,我不在乎日期是什么,我关心的是时间是00:00:00。
我试图从一个数组中调用“/ 00:00:00 /”的正则表达式我将所有数据放入其中,我知道这不是最好的方法,你可以直接从xml中取出它而不是拉动xml然后把它放在一个数组中,这样做似乎毫无意义!
以下是代码:
<!DOCTYPE html>
<html>
<head>
<title>Open Weather API</title>
</head>
<body>
<?php
$url3hours = "http://api.openweathermap.org/data/2.5/forecast?q=London,us&mode=xml&appid=Key";
$xml3hours = simplexml_load_file($url3hours);
$test[] = $xml3hours->forecast;
if (preg_match('/00:00:00/',$test))
{
$temp[] = (string) $xml3hours->forecast->time->temperature["value"];
}
print_r($temp);
?>
</body>
</html>
对不起,如果这没有意义,我很难解释一些问题,如果你需要感谢,可以提出任何问题
答案 0 :(得分:1)
使用Xpath查找time
属性包含from
T00:00:00
代码
$xml3hours = simplexml_load_file($url3hours);
$list = $xml3hours->xpath('//time[contains(@from, "T00:00:00")]/temperature/@value');
foreach($list as $item) {
echo $item . "\n";
}