快速业务通道

用XPath在PHP Web站点中显示Google Calendar事件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
= ''TITLE'' && $g_in_entry) { $g_entries[ count( $g_entries ) - 1 ][''title''] = $text; } }

这段代码显示了 startElement、endElement 和 textData 函数,这些函数都是使用 SAX 示例脚本中 的 SAX 解析器引擎注册的。这部分代码显示了如何处理感兴趣的几个元素。代码变得十分复杂,因为 SAX 中的 XML 元素是按照从顶部到底部的顺序从 XML 文档中读取的。在处理所需的一些元素之前不能检 查当前事件条目是否已确认。例如,gd:eventStatus 元素比 title 元素晚出现在事件中。复杂度的另一 个根源是摘要有 title 元素,并且每个条目也有 title 元素。需要设置一个标志让代码知道读取的是不 是条目内的 title 元素。重复出现的事件的 gd:originalEvent 元素中还有一个 gd:when 元素,该元素 不是您感兴趣的 gd:when 元素。如果没有这个状态检查逻辑,单纯匹配元素名称将生成错误输出。

通过这个示例,您可以看到 SAX API 的两个缺点:它比 DOM API 冗长得多,而且经过与 DOM 样例代 码的比较后,SAX 解析器更加复杂。

用 Zend Google API 封装程序解析摘要

Zend Technologies 与 Google 合作扩展了 Zend 框架,为 PHP 提供了一组面向对象类,用于隐藏 Google 数据 API 的 Atom 摘要的详细信息,从而提供对所有 Google 数据信息的支持。这些面向对象类 有很多优点,包括将各种 Google 数据 API 文档呈现为具有方法和简单参数的抽象对象,以及隐藏 Atom 摘要和 HTTP 协议操作(例如 GET、PUT 和 POST)的详细信息。这些类还把用户验证的详细信息封装到 Google 数据 API 中,使它更易于写入支持 Google 数据 API 所有功能(例如创建和更新来自第三方客 户的事件)的应用程序中。

虽然这样做为不熟悉 XML 解析和 HTTP 协议详细信息的开发人员简化了开发工作,但是 Zend 框架 Google 数据 API 类并非没有缺点。如清单 7 所示,代码十分冗长,因为许多对象构造函数都不带参数 。因此,必须在创建对象之后通过属性设置选项。

清单 7. 用 Zend PHP 类请求和处理 Google Calendar 事件摘要

<?php
require_once ''Zend/Loader.php'';
Zend_Loader::loadClass(''Zend_Gdata'');
Zend_Loader::loadClass(''Zend_Gdata_Calendar'');
$three_months_in_seconds = 60 * 60 * 24 * 28 * 3;
$three_months_ago = date("Y-m-d\Th:i:sP", time() - $three_months_in_seconds);
$three_months_from_today = date("Y-m-d\Th:i:sP", time() + 

$three_months_in_seconds);
// Create an instance of the Calendar service without authentication,
// for read-only access to a public feed
$service = new Zend_Gdata_Calendar();
$query = $service->newEventQuery();
$query->setUser(''foss.sanjuan%40gmail.com'');
$query->setVisibility(''public'');
$query->setProjection(''full'');
$query->setOrderby(''starttime'');
$query->setStartMin($three_months_ago);
$query->setStartMax($three_months_from_today);
// Retrieve the event list from the calendar server
try {
    $eventFeed = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
    echo "Error: " . $e->getResponse();
}
// Iterate through the list of events, outputting them as an HTML list
print "<ul>\n";
foreach ($eventFeed as $event) {
    print "<li>" . $event->title . "</li>\n";
	$startTime = $event->when->startTime;
    print "<li&g

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号