Объект для новой строки -
. Я играл с вашим кодом, пока не нашел что-то, что помогло. Это не очень элегантно, предупреждаю вас:
//First remove any indentations:
$xml = str_replace(" ","", $xml);
$xml = str_replace("\t","", $xml);
//Next replace unify all new-lines into unix LF:
$xml = str_replace("\r","\n", $xml);
$xml = str_replace("\n\n","\n", $xml);
//Next replace all new lines with the unicode:
$xml = str_replace("\n"," ", $xml);
Finally, replace any new line entities between >< with a new line:
$xml = str_replace("> <",">\n<", $xml);
Предположение, основанное на вашем примере, состоит в том, что любые новые строки, которые встречаются внутри узла или атрибута, будут иметь больше текста на следующей строке, а не <
для открытия нового элемента.
Это, конечно, потерпит неудачу, если в вашей следующей строке будет текст, заключенный в элемент уровня строки.