用XPath在PHP Web站点中显示Google Calendar事件
t;" . date("l jS \o\f F Y - h:i A", strtotime(
$startTime ) );
// Google Calendar API''s support of timezones is buggy
print " AST</li>\n";
print "<li>" . $event->where->valueString .
"</li>\n";
}
print "</ul>\n";
Zend Google 数据 API 类的优点之一是在检索到 eventFeed 对象后,摘要的元素和属性可以像 eventFeed 对象的属性一样按层次结构遍历。我认为这样做可以更轻松地阅读处理代码,因为各个元素都 是按照类似于 XML 文档中提供的样式来组织的。不同于 DOMNode 的 getAttributeNode ("attributeName")->value 方法,也可以按照层次结构的样式从父元素遍历属性。 用 XPath 和 SimpleXML 进行解析 我认为由于支持使用 XPath 查询 XML 文档,因此 SimpleXML API 是最易于使用的 XML 解析 API 之 一。它把 XML 文档封装成已装载的 XML 文档的分层对象属性集。这类似于 DOM 返回可以按层次结构遍 历 DOMNode 对象实例的方法。类似于 DOM 的 DOMNode 对象但不同于 Zend 类,需要通过调用 attributes() 方法来检索元素的属性。这将把保存属性的对象作为对象属性返回。清单 8 提供了用 SimpleXML 解析和遍历 Google 数据 API 日历摘要所需的所有逻辑。 清单 8. 用 XPath 和 SimpleXML 解析 Google Calendar 事件摘要 $s = simplexml_load_file($feed); foreach ($s->entry as $item) { $gd = $item->children(''http://schemas.google.com/g/2005''); if ($gd->eventStatus->attributes()->value == $confirmed) { ?> <font size=+1><b> <?php print $item->title; ?> </b></font><br> <?php $startTime = ''''; if ( $gd->when ) { $startTime = $gd->when->attributes()->startTime; } elseif ( $gd->recurrence ) { $startTime = $gd->recurrence->when->attributes()->startTime; } print date("l jS \o\f F Y - h:i A", strtotime( $startTime ) ); // Google Calendar API''s support of timezones is buggy print " AST<br>"; ?> <?php print $gd->where->attributes()->valueString; ?> <br><br> <?php } } ?> PHP 的 SimpleXML API 的一个缺点是它的解析速度比 DOM 或 SAX 慢,多达四倍。此缺点源于 SimpleXML 将通过使用 PHP 的动态特性动态创建元素和属性节点。这一点与在类节点中定义元素和属性 节点的 Zend Google 数据 API 类形成对照。这使得用 Zend 类逐层遍历节点的速度更快。 SimpleXML 的另一个缺点是支持 XML 名称空间。要从名称空间中检索元素,需要对元素调用 children() 方法。这样做将返回以该名称空间的元素为属性的对象。DOM 和 Zend 类提供了更好的支持 ,即将所有名称空间的元素表示为可按层次遍历的节点或元素。 性能注意事项和缓存 讨论 PHP 中的 XML 解析时,我注意到 SimpleXML 可能会比 DOM 或 SAX 解析慢很多倍。我选择 SimpleXML 的原因是它比 SAX 更易于使用并且有助于获得比 DOM 更具有可读性的 XML 解析代码。 SimpleXML 动态生成元素和属性节点作为其他节点的属性,有利于获得几乎像 Zend Google 数据 API 类 一样可读的节点遍历代码。 但是,本文中提供的代 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |