PHP生成XML最常用方式是数组递归转XML,推荐SimpleXML封装递归函数或DOMDocument;需处理数字键、特殊字符、空值、布尔值及UTF-8编码,并正确声明与输出。
PHP生成XML文件最常用的方式是将数组递归转换为XML结构,核心在于避免直接拼接字符串(易出错、难维护),推荐使用 SimpleXML 或自定义递归函数实现安全、可读、可扩展的转换。
SimpleXML 本身不直接支持数组转 XML,但可以封装一个递归函数,把多维 PHP 数组逐层转为 SimpleXMLElement
对象:
$xml = new SimpleXMLElement(' ');
[0], [1])时,建议统一用相同标签名(如 ),避免 XML 标签名含数字或非法字符&、、> 等)进行转义,无需手动 htmlspecialchars
实际开发中,数组常含混合类型(关联/索引、空值、布尔、数字)。转换时需注意:
[] 可转为空节点(
)或忽略,按业务决定true/false 建议转为字符串 "true"/"false",或添加属性 type="boolean"
[0] => 'a', [1] => 'b')应统一包裹,例如:- a
- b
生成 XML 后,保存到文件或输出给浏览器需注意编码与格式:
$xml->asXML() 默认不含声明,可用 preg_replace 或手动拼接
file_put_contents('data.xml', $xml->asXML());
header('Content-Type: application/xml; charset=utf-8');,再 echo 完整 XML 字符串若需精确控制文档类型(DOCTYPE)、CDATA、命名空间或格式化缩进,DOMDocument 更合适:
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true; 自动缩进美化$dom->createElement() 和 $dom->appendChild() 手动构建节点,比 SimpleXML 略繁琐但可控性更强$dom->createCDATASection() 安全嵌入