PHP file_get_contents()和XML文件

时间:2013-05-14 13:46:39

标签: php xml file-get-contents

PHP中的

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

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

如果我使用

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

仅打印节点“parent”的内容,它只打印“Parent text。”,而不是整个文件内容。

4 个答案:

答案 0 :(得分:6)

在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>';

答案 1 :(得分:2)

打印整个内容(如果您查看页面的来源)。

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

答案 2 :(得分:1)

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

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

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

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

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

答案 3 :(得分:0)

在任何输出之前添加以下snipet:

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

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

另一方面,您可以使用如此处讨论的语法高亮显示器:PHP code to syntax-format XML content in a `pre` tag