imsop/simplexml_debug

用于调试与PHP的SimpleXML函数一起工作的代码的工具。

v1.0.0 2017-11-09 23:10 UTC

This package is auto-updated.

Last update: 2024-09-15 03:08:43 UTC


README

PHP的SimpleXML扩展是一个简单而强大的方式,可以以“PHP式”访问和操作XML文档。尽管使用它感觉像使用PHP对象,但它有很多魔法使其能够这样工作,而这些魔法文档记录得不好,理解也不够。

人们在处理SimpleXML时犯的一个关键错误是试图使用熟悉的调试输出:print_rvar_dumpvar_export。但是,这些都不起作用,因为SimpleXML对象不是真正的PHP对象 - 它只是一个围绕底层XML解析器的包装。

SimpleXML的第1条规则:不要print_r SimpleXML

所以,显而易见的问题是:当我想检查我的SimpleXML对象时,我应该使用什么?这个项目旨在回答这个问题。

是什么?

  • 这个项目的第一部分是一个简单的函数 - simplexml_dump() - 它将回显您给它的任何SimpleXMLElement对象的基本摘要。
  • StackOverflow上用户早期的反馈表明,一个完全递归的函数将很有用,尽管这显然需要与XML美化打印器不同的功能。因此,下一个函数是simplexml_tree(),它以总结的树形形式显示整个XML结构。输出旨在显示访问每个显示节点所需的操作符和方法。

特性

阅读PHPDoc,并尝试使用它,以了解它是如何工作的,但为了给你一个尝鲜

  • 可以显示在导航SimpleXML结构时产生的任何对象类型:单个元素、元素列表、单个属性、属性列表。
  • 显示当前元素及其所有直接子元素的命名空间别名和URI。
  • 列出元素上所有属性的总数和名称(按命名空间细分)。
  • 列出直接子元素的总数(按命名空间细分)及其名称摘要(例如,有500个Result元素和1个Info元素)。
  • 显示节点的完整字符串内容,包括CDATA

限制和警告

  • 目前无法区分单个元素(例如$sxml->Result[0])和恰好包含一个项目的元素列表(例如$sxml->Result$sxml->children())。然而,它们可能行为不同 - foreach ($sxml->Result[0] as $result) 等同于 foreach ($sxml->Result[0]->children() as $result)
  • xpath()方法返回一个SimpleXMLElement,而是一个实际的数组对象。如果尝试将此数组传递给simplexml_dump(),它将返回一个错误。
  • 命名空间处理有些棘手,可能存在未正确处理的边缘情况。

谁?

该项目由Rowan Collins,又名IMSoP发起。我的主页在http://rwec.co.uk,您可以通过该域的明显地址用电子邮件联系我。

该代码遵循MIT许可协议,这意味着你可以随意使用它,只要不声称是你自己编写的。我很高兴你将其带走,改进并用于任何你喜欢的目的,但我也很乐意听听你如何使用它以及你是如何改进它的。