我需要在这个大型xml集合的特定“区域”中提取信息。但我不熟悉提取xml。我已经浏览了网站并尝试了各种方法,但我回来的是“my_thread_global_end()中的错误:1个线程没有退出”
这是xml的url我从以下网址获取数据: ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml
我会检索仅为Swans Hill“地区”设置的所有7个预测期。
请帮助
答案 0 :(得分:3)
我同意使用php的简单xml解析器是这种方式。
您可以使用从{xml中提取数据的xpath
方法,让您的生活变得轻松。
这里有一个xpath教程:http://www.w3schools.com/xpath/
这里的php文档:http://www.php.net/manual/en/simplexmlelement.xpath.php
试试这个
<?php
/*
Get the file with CURL
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml');
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true);
$xml_data = curl_exec($curl_handle);
curl_close($curl_handle);
*/
/*
Open the file locally
*/
$xml_data = file_get_contents("weather.xml");
$xml = simplexml_load_string($xml_data);
$result = $xml->xpath("//area[@description='Swan Hill']/forecast-period");
date_default_timezone_set('America/New_York');
foreach ($result as $day) {
//print_r($day);
$day_of_the_week = date("l", strtotime($day["start-time-local"])); //start-time-local is an attribute of a result, so use the [] syntax
$forecast = $day->text; //text is a child node, so use the -> syntax
printf("%s: %s\n", $day_of_the_week, $forecast);
}
?>
编辑更多说明性示例