如何使用PHP解析此XML?

时间:2013-03-25 09:22:59

标签: php simplexml

我想为url解析XML: http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0

我是PHP的初学者并尝试了以下代码:

$ url =“http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0”;

$ xml = simplexml_load_file($ url)或die(“feed not loading”);

的print_r($ XML);

的var_dump($ XML);

我想为每个属性做回声,例如lat,lon,range ..对于这个XML网址。

我在stackoverflow中发现了很多资源,XML非常标准。我找不到用于这种XML格式的示例:

任何人都可以给我一个想法?感谢。

3 个答案:

答案 0 :(得分:0)

请试试这个

 $content = file_get_contents('http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0');  
 $x = new SimpleXmlElement($content);  

foreach($x->cell as $entry) {  
         echo $entry['lat']."==".$entry['lon']; exit;
        }  

答案 1 :(得分:0)

$url = "http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$status = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);

if($status==200){
    $x = new SimpleXMLElement($data,LIBXML_NOCDATA);
    echo 'lat: '.$x->cell['lat'];
    echo 'lon: '.$x->cell['lon'];
    echo 'range: '.$x->cell['range'];
}

<强>更新 这是卷曲的替代方案。如果你已经安装了curl,请使用curl,它会更快。

$url = "http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0";

$data = file_get_contents($url);
$x = new SimpleXMLElement($data,LIBXML_NOCDATA);
$lat = $x->cell['lat'];
$lng = $x->cell['lon'];
$range = $x->cell['range'];

echo 'lat: '.$lat.'<br>';
echo 'lng: '.$lng.'<br>';
echo 'range: '.$range.'<br>';

答案 2 :(得分:0)

$ url =“http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0”;

$xml = simplexml_load_file($url) or die("feed not loading");

$attr = array("lat", "lon"); //list attr you require

foreach($xml->cell as $cell){
    $data = $cell->attributes();

foreach ($attr as $key) {
//         echo "<br>key: $key, value: " . $data[$key];
//edit to insert
$columns[] = $key; 
$values[] = $data[$key];
}

echo $query = "insert into table_name(".implode(',',$columns).") values     (".implode(',',$values).")";
}