在PHP中回显xml会在浏览器中显示空白页面


Echoing xml in PHP gives blank pages in Browser

我有一个类似的问题:https://superuser.com/questions/140242/why-my-browsers-display-xml-files-as-blank-pages?rq=1

我在浏览器中看不到我的xml,只是一个空白页。我只检查了Chrome和firefox,但两者都有。不同之处在于我从MySQL获取数据并回显它。文件扩展名是。php,而不是。xml

$row = mysqli_fetch_assoc($resource);
echo "<?xml version='"1.0'" encoding='"UTF-8'"?>'n";
echo "<video>'n";
echo "<path>" . $row['path'] . "</path>'n";
echo "</video>'n";

当我进入url时,我看到一个空白页面。但是当我"查看源代码"时,我看到了xml树。

<video>
 <path>URLtoVideo.mp4</path>
</video>

我的主要目标是抓取xml数据并使用URLRequest()在Flash中请求它。但是我得到了这个错误

TypeError: Error #1088: The markup in the document following the root element must be    well-formed.

我认为这可能是我在Flash中得到的错误的问题。我只有一个根节点,我认为子节点没有任何问题。所以我唯一的假设是错误发生是因为空白页。

尝试在输出之前添加XML头。您的浏览器试图像读取HTML一样读取它,否则

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

不显示XML,因为浏览器会解释它。

<table></table>

在HTML页面中,您将看不到字符串

"<table><table'>"

但是一个空的表

XML内容也是如此。

另一个Stack overflow帖子得到了这个的答案在这里

这里我复制过去mellamokb的答案

简单的解决方案是嵌入到元素的内部,这将保留格式和尖括号。我也有删除了style="border:none;"的边框,这使得textarea看不见。

示例如下:xxxx

你需要创建一个xml对象/元素,然后回显它,另外不要忘记在回显之前添加header('Content-Type: text/xml');

更多信息请参考此链接http://php.net/manual/en/simplexml.examples-basic.php