如何用php显示SimpleXMLElement

时间:2013-09-30 04:11:26

标签: php xml

您好我从未使用过xml但需要现在,所以我正在努力学习,但我正在努力学习这个结构。这只是为了显示某人网站顶部的天气。

我想使用此xml链接ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml

显示墨尔本天气

基本上我正在尝试让墨尔本预测3天(什么都有效),有一个预测期间数组[0]到[6]

我用这个print_r来查看结构:

$url = "linkhere";
$xml = simplexml_load_file($url);
echo "<pre>";
print_r($xml);

并试图获得一些东西:

$url = "linkhere";
$xml = simplexml_load_file($url);

$data = (string) $xml->forecast->area[52]->description;
echo $data;

这对我没有任何帮助(预计'墨尔本'),显然我需要学习,但如果有人可以提供帮助,那就太棒了。

2 个答案:

答案 0 :(得分:0)

由于description<area>的属性,因此您需要使用

$data = (string) $xml->forecast->area[52]['description'];

我也不会依赖 Melbourne 作为第52个区域节点(尽管这取决于数据维护者)。我会使用aac属性,因为这似乎是唯一的,例如

$search = $xml->xpath('forecast/area[@aac="VIC_PT042"]');
if (count($search)) {
    $melbourne = $search[0];
    echo $melbourne['description'];
}

答案 1 :(得分:0)

这是一个适合您的工作示例:

<?php

$forecastdata = simplexml_load_file('ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml','SimpleXMLElement',LIBXML_NOCDATA);

    foreach($forecastdata->forecast->area as $singleregion) {
    $area = $singleregion['description'];
    $weather = $singleregion->{'forecast-period'}->text;
    echo $area.': '.$weather.'<hr />';  
    }

?>

您可以编辑上述示例以提取所需的标记和属性。

永远记住,理解XML对象结构的一个好习惯是使用例如print_r

打印出其内容

在您提议的XML的特定情况下,通过属性( description )指定城市。因此,您必须使用['attribute name'](see here for more information)来阅读这些属性。

另请注意,标记{'forecast-period'}包含在大括号中,因为它包含连字符,否则不会生成错误。