2013-12-11 122 views
3

如何在元素中創建新行?XML - 創建元素 - 新行

我做的:

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

但是它增加了
每行的末尾。我怎樣才能擺脫這一點?

+0

是這樣嗎'SimpleXML'? – Machavity

+0

沒有'DOMDocument' – Michael

+0

嗯看起來像這是一件很難做的事情:( – Michael

回答

4


\r\n樣式行結尾的回車部分。我認爲DOMDocument編碼它來保存它。如果你檢查XML specification它說它將被規範化爲\n如果沒有編碼。

所以,你有不同的選擇:

  1. 忽略逃脫實體,他們得到解碼XML解析器
  2. 使用CDATA-元素,將正常化,不是在這裏完成的,所以DOM文檔認爲沒有必要逃跑「\ r」。
  3. 請確保您有\n風格的行結束符保存文件
  4. 創建DOM

這裏之前規範化行結束\n是一些示例源來顯示不同的行爲:

$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(); 

輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <code>test1;&#13; 
test2;&#13; 
test3;&#13; 
</code> 
    <code><![CDATA[test1; 
test2; 
test3; 
]]></code> 
    <code>test1; 
test2; 
test3; 
</code> 
</root> 
+0

非常感謝你的解釋和所有這些例子:) – Michael