[英]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.