SimpleXML子元素属性

时间:2013-08-12 22:25:05

标签: php xml parsing simplexml

<form action='' method='post'>
<input type='text' name='location'>
<input type='submit' name='submit'>
</form>

<?php

if(isset($_POST['submit']) && !empty($_POST['location'])) {

$input = $_POST['location'];
$url = 'http://api.openweathermap.org/data/2.5/forecast?q='.strtolower($input).'&mode=xml';
$xml = file_get_contents($url, false);
$xml = simplexml_load_string($xml);
echo '<b>Viewing Weather For:</b> '. $xml->location->name;
echo '<b>Temperature:</b> '. $xml->forecast->children('temperature')->attributes('value');

}

天气API:http://api.openweathermap.org/data/2.5/forecast?q=london,uk&mode=xml

我想获得温度值

echo '<b>Temperature:</b> '. $xml->forecast->children('temperature')->attributes('value');

这就是我卡住的地方

我真的很感激你的答案:)

1 个答案:

答案 0 :(得分:0)

要获取value节点第一次出现的temperature属性,请执行以下操作:

$result = $xml->forecast[0]->time[0]->temperature["value"];

要考虑<time>,请使用xpath

$results = $xml->xpath("//time");

这将选择所有time个节点,现在循环:

foreach ($results as $result)
    echo "temperature for $result[from] to $result[to]: {$result->temperature['value']}<br />";

看到它有效:http://codepad.viper-7.com/wuUbEv