Skip to content

php_ref_simplexml

SimpleXML 是一个 PHP 扩展,提供了一套非常简单易用的工具,用于将 XML 转换为可以通过普通属性选择器和数组迭代器处理的对象。

它对于读取和提取已知结构的 XML 文档数据特别有用。它将元素、属性和文本内容表示为可访问的对象属性和数组元素。

虽然 SimpleXML 对于常见任务功能强大,但在处理复杂命名空间、非常大的文件(内存占用)或需要对 XML 解析进行细粒度控制(此时 DOMDocument 或 XMLReader 可能更适合)时可能会有局限性。

SimpleXML 扩展是 PHP 核心的一部分,默认情况下已启用。无需单独安装。

以下是用于加载 XML 的主要函数以及 SimpleXMLElement 对象上可用的方法:

函数/方法描述
simplexml_load_file()将 XML 文件解释为 SimpleXMLElement 对象。失败时返回 false。
simplexml_load_string()将 XML 字符串解释为 SimpleXMLElement 对象。失败时返回 false。
simplexml_import_dom()从 DOM 节点(通过 DOMDocument 创建)获取 SimpleXMLElement 对象。
__construct()(方法)创建新的 SimpleXMLElement 对象,通常由 simplexml_load_* 隐式调用。
asXML() / saveXML()(方法)基于 SimpleXMLElement 对象返回格式正确的 XML 字符串(版本 1.0)。可以选择保存到文件。
xpath()(方法)在 XML 数据上运行 XPath 查询,并返回 SimpleXMLElement 对象数组或 false。
registerXPathNamespace()(方法)为下一个 XPath 查询创建命名空间上下文。
addAttribute()(方法)向 SimpleXML 元素添加属性。如果适用,需要命名空间参数。
addChild()(方法)向 SimpleXML 元素添加子元素。如果适用,需要命名空间参数。
getName()(方法)获取 XML 元素的名称。
getNamespaces()(方法)返回文档中使用的命名空间(与当前节点相关)。
getDocNamespaces()(方法)返回文档根节点中声明的命名空间。
attributes()(方法)识别元素的属性。返回包含属性的 SimpleXMLElement 对象,该对象可以迭代或通过名称访问。
children()(方法)查找给定节点的子节点。可以选择指定命名空间。
count()(方法)计算元素的子节点数量。

SimpleXML 迭代(SimpleXMLElement 实现了 Traversable 接口)

Section titled “SimpleXML 迭代(SimpleXMLElement 实现了 Traversable 接口)”

SimpleXMLElement 对象通常可以直接使用 foreach 进行迭代,以访问同名的子元素。迭代器的内部接口方法也可以概念性地理解为:

迭代器概念 / 方法描述
current()返回迭代中的当前元素。
key()返回当前元素的键(通常是标签名或索引)。
next()将迭代器移动到下一个元素。
rewind()将迭代器重置到第一个元素。
valid()检查当前迭代器位置是否有效(即指向一个元素)。

您通常不需要直接调用这些迭代器方法,而是依赖 foreach 来处理迭代过程。

更多详情和示例,请参考官方 PHP 手册:

https://www.php.net/manual/en/book.simplexml.php