用XPath在PHP Web站点中显示Google Calendar事件
= ''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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |