【问题标题】:PHP DOM vs SimpleXML for Atom GData feed parsing用于 Atom GData 提要解析的 PHP DOM 与 SimpleXML
【发布时间】:2011-02-23 06:15:34
【问题描述】:

我正在构建一个库来访问 Google Analytics Data Export API。库访问的所有数据都是 Atom 格式,并且自始至终使用许多不同的名称空间。到目前为止,我对 API 的实验一直使用 SimpleXML 进行解析,尤其是因为我一直在做的只是访问提要中保存的数据。

现在我要编写一个库,我想知道是否继续使用 SimpleXML 是否足够,或者 PHP 中 DOM 模块的增强功能是否会在未来受益。我还没有为库的这一部分编写太多代码,所以仍然可以选择。

我已经读到,如果您需要即时构建 XML DOM 或修改现有的 XML DOM,PHP DOM 模块可能是一个更好的选择,但由于其性质,我并不完全确定我是否需要该功能API(例如,不向服务器推送数据)。 SimpleXML 肯定更容易使用,我看到有人说,对于只读情况,它就是你所需要的。

基本上问题是,你会用什么?兼容性将不是问题,因为服务器配置将符合应用程序的要求。是否值得考虑使用 PHP DOM 构建库,还是我现在应该坚持使用 SimpleXML?

更新:以下是我将要处理的提要类型的两个示例:

  1. Account feed
  2. Data feed

【问题讨论】:

    标签: php simplexml gdata google-analytics-api


    【解决方案1】:

    我的看法:

    SimpleXML 专家:

    • 简单
    • 半直观的非冗长代码
    • 非常适合阅读/解析文档

    SimpleXML 缺点:

    • 生成 XML 很糟糕。
    • 缺乏灵活性和力量

    DOM 专家:

    • 非常强大
    • 非常适合生成文档
    • 如果您编写过任何其他 DOM 脚本(例如:在 Javascript 中)会很熟悉

    DOM 缺点:

    • 详细
    • 有时不必要地复杂。

    我个人会一直坚持使用 DOM。它会带你去任何你需要去的地方。文档是绰绰有余的,尽管您的手可能会因所有打字而感到酸痛,但您永远不会因为“为什么不能这样做这个??”而感到沮丧?

    如果您需要做的只是阅读文档或进行一些非常基本的编辑,那么可能会选择 SimpleXML。不过对我来说,我已经习惯了 DOM 库,所以我只是到处使用它,这很棒。

    【讨论】:

      【解决方案2】:

      SimpleXML 完全能够处理名称空间。在您的情况下,您只需遍历条目,使用 getNameSpaces 并将参数传递给 children 方法以请求具有特定命名空间的子项。

      也就是说,如果你想编写 3 倍的代码,你可以使用 DOM。

      【讨论】:

      • 是的,这就是我现在正在做的事情。我更担心需要进行一些 DOM 操作和/或创建的情况。
      【解决方案3】:

      好吧,如果您需要重新发明轮子,我可能会使用 SimpleXML... 或者您可以只使用 Zend_Gdata(如果您需要的话)或扩展 Zend_Feed_Atom 如果不是。任何一个选项都应该是你需要做的工作量的一半:)

      【讨论】:

      • 是的,有人为 Zend_Gdata 提交了 Google Analytics 模块,在 GitHub 上有一些很棒的代码,但就我而言,我使用 OAuth 作为身份验证层,据我所知不是Zend_Gdata 目前完全支持。不过我可能是错的 - 请随时纠正我! Zend_Feed_Atom 如何使用命名空间元素?我想它应付得很好?
      • 它应该处理刚刚找到的命名空间。 Zend_Feed 基类具有 registerNamespace 和 lookupNamespace 方法,我认为它们的工作方式类似于我过去必须在一些基于 SimpleXML 的类上编写的命名空间管理。
      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多