As part of my freelance work I send data to APIs, often using XML for data transfer. I log the XML sent and received for debugging and auditing, however the XML often has no line breaks or indentation, making it difficult to read.
Fortunately there’s a simple way to pretty print or format XML strings in PHP, by using the DOMDocument class with a few parameters. I’ve used a hardcoded XML string in the example below, but if you have a SimpleXmlElement object the asXML function will return the XML as a string.
<?php $xml = '<test><a><b></b></a><c></c></test>'; $dom = new \DOMDocument('1.0'); $dom->preserveWhiteSpace = true; $dom->formatOutput = true; $dom->loadXML($xml); $xml_pretty = $dom->saveXML();
The output of running the above code is:
<?xml version="1.0"?> <test> <a> <b/> </a> <c/> </test>