6

公開されているGoogleカレンダーからXMLフィードを取得しました。このように見えます:

<?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='.........@google.com'/>
            <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変数に存在しません。このノードを取得するにはどうすればよいですか?

4

4 に答える 4

10

このライブラリを使用することを強くお勧めします:https ://github.com/collegeman/coreylib 。それは最初から最後まですべてを気が遠くなるほど簡単にします。

于 2009-08-28T13:39:35.653 に答える
5

もちろん、XMLを解析する方法はいくつかあります。XPathを使用してPHPWebサイトにGoogleカレンダーイベントを表示し(「PHPを使用したGoogleカレンダーフィードの解析」を参照)、PHPアプリケーションをGoogleカレンダーと統合することは、サンプルコードなどを含む2つの包括的なリソースです。

個人的には、次のアプローチを使用しました。

$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";
}
于 2009-12-19T15:15:40.980 に答える
1

Zend GData ライブラリを使用して、Google Web サービス (カレンダーを含む) を解析できます。XML コードを手動で使用するよりも簡単です。これを行う方法を示すチュートリアルがここにあります。

于 2009-11-14T23:31:08.303 に答える
0

Full Calendar は Coreylib よりもはるかに簡単でした。Coreylib は非常に強力であると確信していますが、簡単に実装できるものではありませんでした。

FullCalendar を 5 分で実行しました。http://arshaw.com/fullcalendar/docs/google_calendar/

于 2012-09-26T15:46:43.083 に答える