在 PHP 中,我想加载一个 XML 文件(作为文本文件)并在屏幕上显示其内容(作为文本)。我有一个简单的 XML 格式
<root> <parent>Parent text. </parent></root>
如果我使用
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myfilecontent;
只打印节点“父”的内容,它只打印“父文本”,而不是整个文件内容。
在 PHP 中,我想加载一个 XML 文件(作为文本文件)并在屏幕上显示其内容(作为文本)。我有一个简单的 XML 格式
<root> <parent>Parent text. </parent></root>
如果我使用
$myxmlfilecontent = file_get_contents('./myfile.xml');
echo $myfilecontent;
只打印节点“父”的内容,它只打印“父文本”,而不是整个文件内容。
当您在 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>';
它正在打印整个内容(如果您查看页面的来源)。
但是如果文件类型设置为 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 code to syntax-format XML content in a `pre` tag