2012-03-20 81 views
0

我一直在試圖用simplexml和json_decode解析odata的xml和json數據,但它不工作。當我查詢數據並將鏈接放入地址欄時,我收到了無用的數據,可以看到我想要的數據。當我將鏈接放在simplexml或json_decode方法中並執行var_dump()時,沒有數據在那裏。在Linux服務器上設置Odata?或者用php解析odata?

這只是一堆odata鏈接,以獲取數據。例如,

我的原始鏈接,domain.com/1.0/DataService/Titles(4563)/?devid = {...}。

該數據將顯示流派,標題和描述,但對於序我拿到流派或說明,我將需要使用這個網址是,

domain.com/1.0/DataService/Genre (4563)/?devid = {...}或domain.com/1.0/DataService/Description(4563)/?devid = {...}。


如果使用的OData SDK可以更容易地獲取數據,這是偉大的,但我讀過的SDK安裝設在這裏,http://odataphp.codeplex.com/。我只是不確定從哪裏開始。

編輯

下面是一些示例代碼

$url = "http://api.internetvideoarchive.com/1.0/DataService/EntertainmentPrograms()?$expand=MovieCategory,Director,Copyrightholder&$select=MovieCategory/*,Director/*,Copyrightholder/*&developerid=bafd5091-a36d-4103-b435-638dc55d2122&format=atom"; 

$xml = simplexml_load_file("$url"); 

var_dump($xml); 

你可以改變原子JSON來獲取JSON數據。

+0

請郵寄給別人一些代碼,找出哪些是你使用的是什麼版本的PHP回事 – 2012-03-20 03:36:30

+0

?可能你運行4 ...所以我想你需要rawurlencode來逃避&符號& – 2012-03-20 03:57:40

+0

@Mian_Khurram_Ijazless好吧我發佈示例代碼和示例查詢,我將不得不在兩天內刪除我的開發人員帳戶,因爲我公開了我的開發人員ID。 – 2012-03-20 03:57:43

回答

1

定義$ url時,示例代碼中的問題是雙引號。 PHP會嘗試插入$ expand,$ select等作爲變量。由於它們不作爲代碼中的變量存在,因此它們將被刪除。

這樣做的結果是,您丟失了url中的$ expand,這會使MovieCategory和其他導航鏈接顯示爲數據的URL而不是內聯數據。

使用單引號代替:

$url = 'http://api.internetvideoarchive.com/1.0/DataService/EntertainmentPrograms()?$expand=MovieCategory,Director,Copyrightholder&$select=MovieCategory/*,Director/*,Copyrightholder/*&developerid=bafd5091-a36d-4103-b435-638dc55d2122&format=atom'; 

$xml = simplexml_load_file($url); 

var_dump($xml);