2009-08-28 98 views
6

我從公開的Google日曆獲取XML源。看起來是這樣的:解析Google日曆XML Feed

<?xml version='1.0' encoding='UTF-8'?> 
    <feed xmlns='................' xmlns:gd='http://schemas.google.com/g/2005'> 
     <id>http://www.google.com/calendar/feeds/........./public/full</id> 
     <updated>2009-08-24T10:57:00.000Z</updated> 
     <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'/> 
      <title type='text'>Sports Events</title> 
    ..... 
     <entry> 
      <id>...........</id> 
      <published>2009-08-14T00:29:58.000Z</published> 
      <updated>2009-08-14T00:29:58.000Z</updated> 
      <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'/> 
.............. 
      <georss:where> 
       <gml:Point> 
        <gml:pos>11.111111 -22.22222</gml:pos> 
       </gml:Point> 
      </georss:where> 
      <gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'/> 
      <gd:transparency value='http://schemas.google.com/g/2005#event.transparent'/> 
      <gCal:uid value='[email protected]'/> 
      <gCal:sequence value='0'/> 
      <gd:when startTime='2009-10-03' endTime='2009-10-04'/> 

............. 

我們PHP:

$calendar = simplexml_load_file('http://my.feed.com'); 
foreach ($calendar->entry as $item) { 
    //here I get the whole <entry> node 
    $gd = $item->children('http://schemas.google.com/g/2005'); 
    // now in $gd I have all nodes like <gd:XXXXX> 
} 

的問題是如何從這裏獲得價值?

<gml:pos>11.111111 -22.22222</gml:pos> 

它沒有出現在我的$ gd變量中,如何獲得這個節點?

回答

10

我極力推薦使用此圖書館:https://github.com/collegeman/coreylib。它會讓所有事情從頭到尾變得簡單易行。

+1

哦,這太棒了。謝謝你給我看這個圖書館:) – 6bytes 2009-08-28 15:52:04

+0

哈哈我的榮幸!這很好,不是嗎? – 2009-08-28 21:45:22

+0

這是非常令人印象深刻的 – 2009-12-19 15:18:49

1

您可以使用Zend GData庫來解析Google網絡服務(包括日曆)。這比嘗試手動使用XML代碼更容易。有一個教程,告訴你如何做到這一點here

+0

感謝但coreylib工作像魔術:) – 6bytes 2009-11-18 11:24:00

+0

你有一個新的鏈接? – Zoredache 2012-06-15 17:13:08

5

當然有幾種解析XML的方法。 Display Google Calendar events on your PHP Web site with XPath(請參閱「使用PHP解析Google日曆Feed」)和Integrate your PHP application with Google Calendar是包含示例代碼等的兩個全面資源。

就個人而言,我用下面的方法:

$doc = new DOMDocument(); 
$doc->load('http://my.feed.com'); 
$entries = $doc->getElementsByTagName("entry"); 
foreach ($entries as $entry) { 
    $titles = $entry->getElementsByTagName("title"); 
    $title = $titles->item(0)->nodeValue; 

    $times = $entry->getElementsByTagName("when"); 
    $startTime = $times->item(0)->getAttributeNode("startTime")->value; 
    $when = date("l jS \o\f F Y - h:i A", strtotime($startTime)); 
    // ... 
} 

爲了訪問的GeoRSS命名空間等等看看(及其輸出)

foreach ($doc->getElementsByTagNameNS('*', '*') as $element) { 
    echo 'localName: ', $element->localName, ', prefix: ', $element->prefix, "\n"; 
} 
0

完整的日曆是遠遠超過更容易Coreylib。 Coreylib不是簡單的下降,儘管我確信它非常強大。

我的FullCalendar在5分鐘內運行。 http://arshaw.com/fullcalendar/docs/google_calendar/

+2

這個問題被標記爲php,所以如果你甚至沒有說它是jQuery的替代品,那麼你的jQuery解決方案是不合理的和誤導性的。 – wdyp 2013-08-14 14:21:44