A tiny library for pretty printing XML, inspired purely from DomDocument's lack of ability to configure indent distance.
The recommended way to install the extension is using Composer.
Run the following command:
composer require simonschaufi/pretty-xml
To use, give it a badly indented (but well-formed and valid) XML string:
use PrettyXml\Formatter;
$formatter = new Formatter();
echo "<pre>" . htmlspecialchars($formatter->format('<?xml version="1.0" encoding="UTF-8"?><foo><bar>Baz</bar></foo>')) . "</pre>";
You can also change the size of the indent:
$formatter->setIndentSize(2);
And you can change the indent character:
$formatter->setIndentCharacter("\t");
use PrettyXml\Formatter;
$formatter = new Formatter();
echo htmlspecialchars($formatter->minify(<<<XML
<?xml version="1.0" encoding="UTF-8"?>
<foo>
<bar>Baz</bar>
</foo>
XML));
// keep comments
echo htmlspecialchars($formatter->minify(<<<XML
<?xml version="1.0" encoding="UTF-8"?>
<foo>
<!-- comment -->
<bar>Baz</bar>
</foo>
XML, true));
Thanks to vkBeautify for their algorithm.