快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

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号