You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML报错:文档末尾存在额外内容,PHP生成XML代码求助

解决XML输出“文档末尾存在额外内容”错误

问题场景

PHP代码实现CSV转XML功能,生成的XML格式看似正确,但运行时提示错误:第2行第1列:文档末尾存在额外内容(Extra content at end of document)。原代码如下:

<?php
$csv = array_map(function($v){return str_getcsv($v, "|");},file('quotes.csv'));
$hdrs = array_shift($csv);
    
$count = 0;

$xml = '<?xml version="1.0" encoding="UTF-8"?>';

$xml .= '<quotes>';

foreach($csv as $k=>$v) {
    $xml .= '<record id="' . ++$count .'">';
    foreach($hdrs as $h=>$i) {
        $xml .= '<' . $i . '>' . htmlspecialchars($v[$h], ENT_XML1, 'UTF-8') . '</' . $i . '>';
    }
    $xml .= '</record>';
}

$xml .= '</quotes>';

header ("Content-Type:text/xml");
echo $xml;
?>

预期输出XML格式:

<quotes>
<record id="1">
<quote>There is no remedy but to love more.</quote>
<source>Henry David Thoreau</source>
<dob-dod>1817-1862</dob-dod>
<wplink>http://en.wikipedia.org/wiki/Henry_David_Thoreau</wplink>
<wpimg>http://upload.wikimedia.org/wikipedia/commons/f/f0/Benjamin_D._Maxham_-_Henry_David_Thoreau_-_Restored.jpg</wpimg>
<category>love</category>
</record>
</quotes>

问题原因

  1. PHP文件末尾的多余空白:如果代码末尾的?>之后存在换行、空格等字符,会在echo XML后被输出,导致XML文档末尾出现额外内容
  2. CSV读取的无效行:file()函数默认保留每行末尾的换行符,可能读取到空行,解析后生成无效的XML节点,或者破坏XML结构

解决方案

  1. 移除PHP闭合标签?>,避免标签后出现意外输出
  2. 优化file()函数参数,过滤空行并去除每行末尾的换行符
  3. 确保PHP文件没有UTF-8 BOM头(可通过编辑器设置去除)

修正后的代码

<?php
// 读取CSV时过滤空行,去除每行末尾换行符
$csv = array_map(function($v){return str_getcsv($v, "|");},file('quotes.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
$hdrs = array_shift($csv);
    
$count = 0;

$xml = '<?xml version="1.0" encoding="UTF-8"?>';

$xml .= '<quotes>';

foreach($csv as $k=>$v) {
    $xml .= '<record id="' . ++$count .'">';
    foreach($hdrs as $h=>$i) {
        $xml .= '<' . $i . '>' . htmlspecialchars($v[$h], ENT_XML1, 'UTF-8') . '</' . $i . '>';
    }
    $xml .= '</record>';
}

$xml .= '</quotes>';

header ("Content-Type:text/xml");
echo $xml;
// 移除闭合标签,避免额外输出

验证说明

修正后的代码会:

  • 正确读取CSV内容,过滤无效空行
  • 确保XML输出后没有任何额外字符
  • 生成符合预期格式的XML文档

内容的提问来源于stack exchange,提问作者Carlo M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:30:45