如何使用PHP提取XML数据

时间:2010-06-30 01:53:06

标签: php xml

我需要在这个大型xml集合的特定“区域”中提取信息。但我不熟悉提取xml。我已经浏览了网站并尝试了各种方法,但我回来的是“my_thread_global_end()中的错误:1个线程没有退出”

这是xml的url我从以下网址获取数据: ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml

我会检索仅为Swans Hill“地区”设置的所有7个预测期。

请帮助

1 个答案:

答案 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);
}
?>

编辑更多说明性示例