PHP无内置数组转XML函数,需用SimpleXML(推荐)或DOMDocument实现,关键在处理嵌套、重复元素、属性/文本区分及非法字符转义,并注意键名合法性、空值处理与UTF-8编码。

PHP 将数组转为 XML 没有内置函数,但可以通过递归构造或使用 SimpleXML 扩展实现。关键在于处理嵌套结构、同级重复元素、属性与文本内容的区分,以及避免非法字符(如特殊符号、空格开头的键名)导致 XML 格式错误。
用 SimpleXML 手动构建(推荐,灵活可控)
适合大多数场景,能精确控制节点名、属性和文本内容:
- 先创建一个根节点:
$xml = new SimpleXMLElement('<root></root>'); - 写一个递归函数,根据数组键值类型决定是添加子节点(字符串/数字)、属性(以
@开头的键),还是继续嵌套(数组) - 对值做
htmlspecialchars()转义,防止、<code>&等破坏 XML 结构 - 示例:数组
['name' => '张三', 'age' => 25]→<root><name>张三</name><age>25</age></root>
用 DOMDocument + 递归(更严谨,支持编码和格式化)
比 SimpleXML 更底层,适合需要设置文档声明、缩进、编码(如 UTF-8)的正式输出:
- 初始化:
$dom = new DOMDocument('1.0', 'UTF-8'); - 用
$dom->formatOutput = true;自动缩进 - 递归遍历数组,对每个元素调用
$dom->createElement()或$dom->createAttribute() - 注意:DOMDocument 对空字符串、null 值更敏感,需提前过滤或转为空节点
处理常见坑点
实际转换中容易出错的地方:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~