PHP文件\u get\u contents()和XML文件

PHP文件\u get\u contents()和XML文件,php,xml,file-get-contents,Php,Xml,File Get Contents,在PHP中,我想加载一个XML文件(作为文本文件)并在屏幕上显示其内容(作为文本)。我有一个简单的XML格式 <root> <parent>Parent text. </parent></root> 只打印节点“父级”的内容,只打印“父级文本”,而不是整个文件内容。它打印的是整个内容(如果查看页面的源代码) 但是,如果文件类型设置为HTML,则您将看不到节点。在HTML页面中打印XML时,XML将被同化为HTML,因此您不会看到标记 要将标记视为

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

<root> <parent>Parent text. </parent></root>
只打印节点“父级”的内容,只打印“父级文本”,而不是整个文件内容。

它打印的是整个内容(如果查看页面的源代码)


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

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

要将标记视为文本,应将其替换为HTML对应实体:

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

echo str_replace('在任何输出之前添加以下snipet:

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

$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myxmlfilecontent;
这将强制用户代理(浏览器)将输出视为纯文本


另一方面,您可以使用一些语法高亮显示,如这里所讨论的:

您需要告诉您的浏览器,您发送给它的内容(您将它“回显”到浏览器)是XML。这可以通过发送适当的内容类型标题来完成:

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


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

标题(“内容类型:text/plain”);
是正确的答案,前提是XML是页面上的唯一内容-如果它是一个普通网页,在某个地方显示了一些XML,那么它就不是。@dflock,我同意你的看法,在另一种情况下,我提供了如何在HTML中格式化XML的方法
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo '<pre>' . str_replace('<', '&lt;', $myxmlfilecontent) . '</pre>';
header("Content-Type: text/plain");
header('Content-Type: text/xml');

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