2013-03-25 62 views
0

我想對URL做解析XML: http://www.opencellid.org/cell/get?key=myapikey&mcc=250&mnc=99&cellid=29513&lac=0如何使用PHP解析此XML?

我是PHP的初學者,並試圖代碼如下:

$ 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」);

print_r($ xml);

var_dump($ xml);

我想爲每個屬性做回聲,例如lat,lon,range ..這個XML網址。

我在stackoverflow中發現了很多資源,其中XML非常標準。我找不到一個用於此格式XML的示例:

任何人都可以給我一個想法嗎?謝謝。

+0

使用@Praveen卡拉爾答案如果你想要一個較短的代碼,但如果你關心速度,使用捲曲。 – 2013-03-25 09:36:35

回答

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']; 
} 

更新: 這是捲曲的替代品。如果您已安裝捲曲,請使用捲曲,速度更快。

$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>'; 
+0

謝謝,但它傳遞了消息「PHP致命錯誤:調用未定義的函數curl_init()」。 – 2013-03-25 09:54:10

+0

我認爲網絡服務器沒有安裝extension = php_curl.dll。 – 2013-03-25 10:33:46

+0

然後,使用file_get_contents($ url),並刪除if($ status == 200) – 2013-03-25 10:48:23

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; 
     } 
+0

謝謝你的幫助。我如何獲得屬性經緯度,範圍?我怎樣才能做回聲來檢查每個屬性?謝謝。 – 2013-03-25 09:56:50

+0

請檢查更新的代碼,希望它能幫助你。 – 2013-03-25 10:07:09

+0

是的,它現在有效。謝謝你的幫助。 – 2013-03-25 10:32:07

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).")"; 
} 
+0

謝謝Angelin,我怎樣才能得到屬性,例如拉個別?最終該屬性將被上傳到MySQL。所以我應該弄清楚如何提取每個屬性!
LAC:0
MCC:250
緯度:50.5715642160311
CELLID:29513
LON:25.2897075399231
nbSamples:57
MNC:99
範圍:6000 – 2013-03-25 10:19:12

+0

找到更新的代碼 – 2013-03-25 10:37:48

+0

您好我怎樣才能把這些屬性從URL表的MySQL? – 2013-03-31 15:50:19