PHP将数组转XML的核心是递归遍历:索引数组用item标签,关联数组用键名作标签,值为数组则递归,标量值用htmlspecialchars转义;推荐使用spatie/array-to-xml库处理属性、CDATA、空值等复杂场景。

PHP 将数组转换为 XML,核心思路是递归遍历数组,根据键名生成 XML 标签名,值作为节点内容或属性;需注意处理关联数组(转为带属性或嵌套节点)、索引数组(统一节点名或自动编号)、特殊字符转义、XML 声明与编码设置。
基础方法:手动递归构建 XML 字符串
适合结构简单、可控的数组,不依赖外部库,逻辑清晰。
- 用 SimpleXMLElement 实例作为根节点,逐层添加子元素
- 对每个数组项:若键为数字(索引数组),使用默认标签名(如
- );若为字符串(关联数组),直接用键作标签名
- 值为数组时递归调用;值为标量时设为节点文本,并用 htmlspecialchars() 转义防止非法字符破坏 XML 结构
- 最后用 asXML() 输出完整 XML 字符串,可指定 UTF-8 编码
使用第三方库:如 spatie/array-to-xml(推荐)
处理复杂嵌套、属性、CDATA、根节点命名等更健壮,减少出错可能。
- 通过 Composer 安装:composer require spatie/array-to-xml
- 支持传入选项:自定义根节点名(rootElementName)、是否加 XML 声明(addXmlDeclaration)、将特定键转为属性(attributePrefix,如 '@' 开头的键)
- 自动区分索引/关联数组,索引数组默认用 item 为子节点名,也可自定义
- 内置转义和空值处理(如 null 可转为空节点或忽略)
处理常见难点:属性、重复节点、空值与编码
纯数组天然不含“属性”概念,需约定规则映射。
标签: php html node composer 编码 中文乱码 lsp
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~