Intereting Posts

PHP file_get_contents () и файлы XML

В PHP я хочу загрузить XML-файл (в виде текстового файла) и показать его содержимое (в виде текста) на экране. У меня есть простой XML в форме

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

Если я использую

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

печатает только содержимое узла «parent», он печатает только «Родительский текст», а не весь контент файла.

Когда вы печатаете XML на странице HTML, 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>'; 

Он печатает все это (если вы посмотрите на источник страницы).

Но если тип файла установлен как 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-код для синтаксического формата XML-контента в теге `pre`