3

在过去的四个小时里,我一直在研究如何解析 xml 并回显谷歌日历提要。我一开始使用本教程很容易做到这一点,但遇到了命名空间的问题,我可以轻松打印出事件的摘要和标题,但我无法打印出 startTime 和 endTime,因为在他们使用的提要<gd:when startTime>等中。我找到了 coreylib并听到很多关于它的简单性的赞美,但我仍然不知道如何做到这一点。

有人可以指点我的方向或给我一个从“完整”谷歌提要中检索一些事件的示例代码(http://www.google.com/calendar/feeds/developer-calendar@google.com/public/完整- 一个示例提要)。即使它只是检索到事件的标题和 startTime 也绰绰有余。

通常我会发布代码,但在这种情况下我几乎没有任何代码,因为我被困得那么糟糕哈哈。先感谢您!

4

2 回答 2

4
$email = "yourEmail";
$url = "http://www.google.com/calendar/feeds/".$email."/public/full";
$xml = file_get_contents($url);

$feed = simplexml_load_string($xml);
$ns=$feed->getNameSpaces(true);

foreach ($feed->entry as $entry) {
    $when=$entry->children($ns["gd"]);
    $when_atr=$when->when[0]->attributes();
    $start=$when_atr['startTime'];
    $end=$when_atr['endTime'];
    $title=$entry->title;

    echo "<p>".$start." - ".$end." ".$title."</p>";
}

是否进行了更多搜索并找到了类似的东西,如果每个人都需要它来做类似的事情,它就会很好地工作。哇!

于 2013-10-23T23:48:13.277 回答
2

根据您上面的内容,我可以对其进行一些修改以调整样式。

PHP的

<?php 
$email = "your public calendar address email";
$url = "http://www.google.com/calendar/feeds/".$email."/public/full";
$xml = file_get_contents($url);

$feed = simplexml_load_string($xml);
$ns=$feed->getNameSpaces(true);

foreach ($feed->entry as $entry) {
    $when=$entry->children($ns["gd"]);
    $when_atr=$when->when[0]->attributes();

    $title=$entry->title;
    echo "<div class='eventTitle'>".$title . "</div>";

    $start = new DateTime($when_atr['startTime']);
    echo "<div class='eventTime'>".$start->format('D F jS, g:ia') . " to ";    

    $end = new DateTime($when_atr['endTime']);
    echo $end->format('g:ia')."</div>" . '<br />' ;    



}

 ?>

CSS

<style>

 .eventTime {
    color:#0CF;
 }

 .eventTitle {
    color:#0FC; 
 }

 </style>

以下资源很有帮助:

DateDate 和 Time以及@Glavić 发布的示例。

于 2013-10-30T22:15:26.930 回答