我想加载一个XML文件(作为文本文件)并在屏幕上显示其内容(作为文本)。我有一个简单的XML格式
<root> <parent>Parent text. </parent></root>
如果我使用
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myfilecontent;
仅打印节点“parent”的内容,它只打印“Parent text。”,而不是整个文件内容。
答案 0 :(得分:6)
在HTML页面中打印XML时,XML会被HTML同化,因此您看不到标记。
要将标记视为文本,您应该将它们替换为HTML对应的实体:
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo str_replace('<', '<', $myxmlfilecontent);
应该做的伎俩
我建议您将xml封装到'pre'中以保留用于演示的空间
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo '<pre>' . str_replace('<', '<', $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