Не знаю, нашли ли вы подходящее решение / обходной путь, но я смотрел на эту проблему в msxml, и кто-то предложил использовать MXXMLWriter. Вы можете передать вывод через SAX-парсер (SAXXMLReader) и подключить к нему MXXMLWriter, как описано здесь . Несколько смешно пересматривать xml, чтобы отформатировать его, когда вы знаете, что DOMDocument имеет всю информацию, необходимую для отступа, но там у вас есть.
На самом деле у меня еще не было времени исследовать, но, по-видимому, вы можете использовать MXXMLWriter, не подключенный к SAX-ридеру, для создания XML - вместо использования DOMDocment - и получать его с отступом по ходу. См. Инструкции здесь .