XML – Criar elemento – Nova linha

Como posso criar uma nova linha em um elemento?

Eu faço:

$currentTrack->appendChild($domtree->createElement('code', ' test1; test2; test3;')); 

No entanto, ele acrescenta até o final de cada linha. Como posso me livrar disso?

é a parte Retorno do carro de um final de linha de estilo \r\n . Eu acho que o DOMDocument o codifica para preservá-lo. Se você verificar a especificação XML, ele diz que será normalizado para \n se não codificado.

Então você tem opções diferentes:

  1. Ignore as entidades escapadas, elas são decodificadas no analisador xml
  2. Use CDATA-Elements, a normalização não é feita aqui, portanto DOMDocument não vê nenhuma necessidade de escaping do “\ r”.
  3. Certifique-se de que você salvou seu arquivo com \n terminais de linha de estilo
  4. Normalize os terminais de linha para \n antes de criar o DOM

Aqui está uma fonte de amostra para mostrar o comportamento diferente:

 $text = "test1;\r\ntest2;\r\ntest3;\r\n"; $dom = new DOMDocument('1.0', 'UTF-8'); $root = $dom->appendChild($root = $dom->createElement('root')); $root->appendChild( $node = $dom->createElement('code') ); // text node - CR will get escaped $node->appendChild($dom->createTextNode($text)); $root->appendChild( $node = $dom->createElement('code') ); // cdata - CR will not get escaped $node->appendChild($dom->createCdataSection($text)); $root->appendChild( $node = $dom->createElement('code') ); // text node, CRLF and CR normalized to LF $node->appendChild( $dom->createTextNode( str_replace(array("\r\n", "\r"), "\n", $text) ) ); $dom->formatOutput = TRUE; echo $dom->saveXml(); 

Saída:

   test1;
 test2;
 test3;
   test1; test2; test3;