PHP file_get_contents() and XML files [duplicate]

风格不统一 提交于 2019-12-12 17:10:16

问题


in PHP I want to load a XML file (as a text file) and show its content (as a text) on a screen. I have a simple XML in the form

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

If I use

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

prints only the content of the node "parent", it prints only "Parent text.", not the whole file content.


回答1:


When you print XML in an HTML page, the XML is assimilated to HTML, so you do not see the tags.

To see the tags as text, you should replace them with the HTML corresponding entity:

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

that should do the trick

I recommend you to also enclose the xml into a 'pre' to preserve spaces for presentation

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



回答2:


It is printing the whole thing (if you look at the source of the page).

But if the file type is set as HTML, then you will not see the nodes.




回答3:


You need to tell your browser that the content you send to it (you "echo" it to the browser) is XML. This is done by sending the proper Content-Type header:

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

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

You browser will then try to display the XML as best as possible, normally with syntax-highlighting and controls to open and collapse nodes.

Otherwise, by default your browser will try to display the text as HTML and because all those tags are not valid HTML tags, they are hidden. That is the default behavior of a browser.




回答4:


Add following snipet before any output:

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

This will force user agent (browser) to treat your output as plain text.

On other hand, you can use some syntax highlighter like discussed here : PHP code to syntax-format XML content in a `pre` tag



来源:https://stackoverflow.com/questions/16544960/php-file-get-contents-and-xml-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!