Как отобразить XML в HTML в PHP?


У меня есть строка с XML:

$string = 
"
<shoes>
    <shoe>
       <shouename>Shoue</shouename>
    </shoe>
</shoes>
";

И хотел бы отобразить его на моем веб-сайте следующим образом:

This is XML string content:
<shoes>
    <shoe>
       <shouename>Shoue</shouename>
    </shoe>
</shoes>

Поэтому я хотел бы сделать это:

  • на сайте, а не в текстовом поле
  • без внешних библиотек, фреймворков и т.д.
  • отформатированный с правильными новыми строками
  • отформатированный с помощью вкладок
  • без цветов и т.д., только текст

Итак, как это сделать простым и понятным способом?

 30
Author: Tomasz Smykowski, 2010-05-19

5 answers

Если вам просто нужно текстовое представление вашей (предварительно отформатированной) строки, вы можете обернуть ее в теги HTML <pre/> и использовать htmlentities чтобы избежать угловых скобок:

<?PHP echo '<pre>', htmlentities($string), '</pre>'; ?>
 61
Author: Chris, 2010-05-19 09:40:46

Вы можете использовать htmlentities(), htmlspecialchars() или какая-то аналогичная функция.

 6
Author: Sinan, 2010-05-19 09:40:14

Это должно работать так:

echo '<p>This is XML string content:</p>'
echo '<pre>';
echo htmlspecialchars($string);
echo '</pre>';
 6
Author: justastefan, 2010-05-19 09:40:47

Если это симплексный объект

<pre>
<?php
echo htmlspecialchars(print_r($obj,true));
?>
</pre>
 1
Author: Frank Forte, 2014-10-08 14:42:39

Я искал решение, которое имело бы слегка окрашенный вывод:

$escaped = htmlentities($content);
$formatted = str_replace('&lt;', '<span style="color:blue">&lt;', $escaped);
$formatted = str_replace('&gt;', '&gt;</span>', $formatted);
echo "<pre>$formatted</pre>\n";
 1
Author: H.Tries, 2017-02-28 13:12:31