PHP怎么把数组转换成XML格式

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

PHP怎么把数组转换成XML格式-第1张图片-佛山资讯网

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 值更敏感,需提前过滤或转为空节点

处理常见坑点

实际转换中容易出错的地方:

标签: php html 编码 中文乱码 递归函数 lsp

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~