繁体   English   中英

如何用PHP显示SimpleXMLElement

[英]how to display SimpleXMLElement with php

嗨,我从未使用过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;

这没有给我任何东西(预期是“墨尔本”),显然我需要学习,而且我可以,但是如果有人可以帮助的话,那会很棒。

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

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

我也不会依赖墨尔本成为第52个区域节点(尽管这实际上取决于数据维护者)。 我会通过它的aac属性来aac因为这似乎是唯一的,例如

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

这是为您工作的示例:

<?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'](属性名称)来阅读这些属性( 有关更多信息,请参见此处 )。

还要注意,标签{'forecast-period'}被括在大括号中,导致其包含连字符,否则将不会产生错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM