PHP file_get_contents() and XML files



我想加载一个XML文件(作为文本文件)并在屏幕上显示其内容(作为文本)。我有一个简单的XML格式

<root> <parent>Parent text. </parent></root>

如果我使用

$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myfilecontent; 

只打印节点"parent"的内容,它只打印"parent text.",而不是整个文件的内容。

当您在HTML页面中打印XML时,XML被同化为HTML,因此您看不到标记。

要将标签视为文本,您应该将它们替换为相应的HTML实体:

$myxmlfilecontent = file_get_contents('./myfile.xml');
echo str_replace('<', '&lt;', $myxmlfilecontent);

应该可以了

我建议您还将xml包含在'pre'中,以保留表示

的空间。
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo '<pre>' . str_replace('<', '&lt;', $myxmlfilecontent) . '</pre>';

打印整个东西(如果你看页面的源代码)。

但是如果文件类型设置为HTML,那么您将看不到节点。

您需要告诉浏览器您发送给它的内容(您将其"回显"到浏览器)是XML。这是通过发送适当的Content-Type头来完成的:

header('Content-Type: text/xml');
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myxmlfilecontent;

浏览器将尝试尽可能地显示XML,通常使用语法高亮和打开和折叠节点的控件。

否则,默认情况下浏览器将尝试将文本显示为HTML,因为所有这些标记都不是有效的HTML标记,因此它们被隐藏。这是浏览器的默认行为

在任何输出前添加以下代码片段:

header("Content-Type: text/plain");

这将强制用户代理(浏览器)将您的输出视为纯文本。

另一方面,您可以像下面讨论的那样使用一些语法高亮显示:PHP代码在' pre '标记
中对XML内容进行语法格式化

最新更新