imsop / simplexml_debug
用于调试与PHP的SimpleXML函数一起工作的代码的工具。
v1.0.0
2017-11-09 23:10 UTC
Requires
- php: >5.3
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-09-15 03:08:43 UTC
README
PHP的SimpleXML扩展是一个简单而强大的方式,可以以“PHP式”访问和操作XML文档。尽管使用它感觉像使用PHP对象,但它有很多魔法使其能够这样工作,而这些魔法文档记录得不好,理解也不够。
人们在处理SimpleXML时犯的一个关键错误是试图使用熟悉的调试输出:print_r
、var_dump
、var_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许可协议,这意味着你可以随意使用它,只要不声称是你自己编写的。我很高兴你将其带走,改进并用于任何你喜欢的目的,但我也很乐意听听你如何使用它以及你是如何改进它的。