PHP怎么生成XML文件 PHP SimpleXML创建XML数据方法

PHP生成XML最常用方式是SimpleXML扩展,通过new SimpleXMLElement()创建对象,用addChild()和addAttribute()添加节点与属性,自动处理转义和闭合,UTF-8中文emoji可直接写入,输出时需设置header或保存文件并注意编码。

PHP 生成 XML 文件最常用、最简洁的方式就是用 SimpleXML 扩展,它把 XML 当作对象来操作,无需手动拼接字符串,也不用处理转义和格式问题,适合大多数中小型数据导出场景。

用 SimpleXML 创建空 XML 文档并添加结构

先创建一个根元素,再逐层添加子元素和属性。SimpleXML 会自动处理标签闭合和基础转义(如 &&)。

  • new SimpleXMLElement('') 初始化一个 XML 对象
  • addChild('tag', '内容') 添加带文本的子节点
  • addAttribute('name', 'value') 给当前节点加属性
  • 支持链式调用,比如 $xml->person->addChild('name', '张三')

向 XML 中插入含特殊字符的数据

SimpleXML 默认会对文本内容做基本 HTML 实体转义,但对属性值或 CDATA 内容需额外注意:

  • 普通文本(addChild('title', 'A & B > C'))会被安全转义为 A & B > C
  • 若需保留原始符号(如 HTML 片段),可用 DOMDocument 配合 createCDATASection(),SimpleXML 本身不直接支持 CDATA
  • 中文、emoji 等 UTF-8 字符可直接写入,前提是脚本文件保存为 UTF-8 且输出时声明编码(见下一条)

保存或输出 XML 并确保格式正确

生成完后别忘了设置 HTTP 头和编码声明,否则浏览器可能解析失败或乱码:

  • 输出到浏览器:header('Content-Type: application/xml; charset=utf-8'); + echo $xml->asXML();
  • 保存为文件:$xml->asXML('data.xml');,文件会自动以 UTF-8 编码写入
  • 如需缩进美化(非必须),可用 dom_import_simplexml($xml)->ownerDocument->formatOutput = true;,再调用 saveXML()

基本上就这些。SimpleXML 不复杂但容易忽略编码和转义细节,只要结构清晰、内容不过于嵌套,几行代码就能搞定标准 XML 输出。