4

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

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

如果我使用

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

只打印节点“父”的内容,它只打印“父文本”,而不是整个文件内容。

4

4 回答 4

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>';
于 2013-05-14T13:52:33.013 回答
3

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

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

于 2013-05-14T13:48:49.090 回答
2

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

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

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

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

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

于 2013-05-15T20:02:14.860 回答
0

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

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

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

另一方面,你可以使用一些语法高亮,就像这里讨论的那样:PHP code to syntax-format XML content in a `pre` tag

于 2013-05-14T13:53:19.897 回答