【问题标题】:PHP XML error - extra content at the end of the documentPHP XML 错误 - 文档末尾的额外内容
【发布时间】:2017-07-17 13:32:50
【问题描述】:

我有下面的 PHP 代码,旨在从 MySQL 数据库中的 3 列和多行创建 XML 文档。我收到以下错误消息:

此页面包含以下错误:

第 8 行第 11 列的错误:文档末尾的额外内容 下面是出现第一个错误之前的页面渲染。

-一些正确的文本输出。-

这让我发疯,我在代码中添加和删除了 XML 内容,但没有任何帮助。

<?php
header('Content-type: text/xml');

$xmlout = "<?xml version=\"1.0\" ?>\n";
$xmlout .= "<TestXML>\n";

$db = new PDO('mysql:host=localhost;dbname=hidden','hidden','hidden');
$stmt = $db->prepare("SELECT * FROM testDB");
$stmt->execute();
while($row = $stmt->fetch()){
 $xmlout .= "\t<test>\n";
 $xmlout .= "\t\t<one>".$row['one']."</one>\n";
 $xmlout .= "\t\t<two>".$row['two']."</two>\n";
 $xmlout .= "\t\t<three>".$row['date1']."</three>\n";
 $xmlout .= "\t</test>\n";
}

$xmlout .= "</TestXML>";
echo $xmlout;
?>

非常感谢您的帮助!

【问题讨论】:

  • 是否有任何数据库列值包含任何此符号?
  • @SamuilBanti No.
  • 查看生成页面的源代码时看到了什么。你用什么看它?浏览器?

标签: php mysql xml


【解决方案1】:

我建议使用 DOMDocument 来生成 XML,而不是字符串连接。根据预期的内容,您还可以在 XML 中使用 CDATA 部分 - 对代码进行非常简单的修改以允许这样做。

<?php

    $sql='select * from `testdb`';
    $db=new PDO('mysql:host=localhost;dbname=hidden','hidden','hidden');
    $stmt=$db->prepare( $sql );

    if( $stmt ){
        $res=$stmt->execute();
        if( $res ){

            $dom=new DOMDocument;
            $root=$dom->createElement('testXML');
            $dom->appendChild( $root );

            while( $rs=$stmt->fetch( PDO::FETCH_OBJ ) ){
                $test=$dom->createElement('test');

                $test->appendChild( $dom->createElement('one', $rs->one ) );
                $test->appendChild( $dom->createElement('two', $rs->two ) );
                $test->appendChild( $dom->createElement('three', $rs->three ) );

                $root->appendChild( $test );
            }
        }

        $stmt->closeCursor();

        header('Content-Type: text/xml');
        echo $dom->saveXML();
    }

?>

【讨论】:

  • 哇,巧妙的解决方案!奇迹般有效。非常感谢楼主!
猜你喜欢
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多