I have a web page that builds an XML from an existing XML applying changes. I want to output the new XML file in a textarea
as a preview. It displays any nodes that were present in the original XML with the proper whitespaces/formatting (indents and linebreaks) that the original XML had just fine, but any new nodes are all displayed on one line with no indents. Example:
<original parent node>
<original child>value</original child>
</original parent node>
<original parent node>
<new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child>
</original parent node>
Here is the code that writes and reads back in the XML:
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = true;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
file_put_contents($file, $dom->saveXML());
echo "<textarea cols='100' rows='40'>".file_get_contents($file)."</textarea>";
I'm also using SimpleXML to manipulate the XMLS. How can I get the proper whitespacing to display for the new nodes?
Try:
Add this, it works for me.
You can delete
$dom->firstChild->firstChild->firstChild
for more info.I've found that
formatOutput
only works whenpreserveWhiteSpace
is disabled: