2011-08-12 33 views
3

我正在用DOM創建一個XML文檔,並從我需要放入元素的數據庫中獲取了諸如ä和å之類的HTML有趣字符。但我無法真正實現它的工作。在dom的xml元素中獲取cdata(html)

什麼是添加CDATA HTML元素中的適當的方式,使我的輸出變成這樣:在使用本

<TRANSLATIONS> 
    <DENMARK> 
     <ERRORADDRESSLINE1REQUIRED><![CDATA[&auml; &aring;]]></ERRORADDRESSLINE1REQUIRED> 
    </DENMARK> 
</TRANSLATIONS> 

$sData = "<![CDATA[" . $value . "]]>"; 
$objLabel = $objXmlDoc->createElement($label, $sData); 

並沒有真正做的伎倆 和追加$objXmlDoc->createCDATASection($value)在另一個標籤旁邊創建一個元素,但不在標籤內。

我忽略了什麼?

回答

4

你必須追加你想讓它在CDATA節的元素:

$dom = new DOMDocument('1.0', 'utf-8'); 
$dom->appendChild($dom->createElement('translations')) 
     ->appendChild($dom->createElement('denmark')) 
      ->appendChild($dom->createElement('error')) 
       ->appendChild($dom->createCDataSection('&auml; &aring;')); 

$dom->formatOutput = true; 
echo $dom->saveXml(); 

輸出:

<?xml version="1.0" encoding="utf-8"?> 
<translations> 
    <denmark> 
    <error><![CDATA[&auml; &aring;]]></error> 
    </denmark> 
</translations> 

不過應該沒有必要把A和A到CDATA節時您正在使用UTF-8:

$dom = new DOMDocument('1.0', 'utf-8'); 
$dom->appendChild($dom->createElement('translations')) 
     ->appendChild($dom->createElement('denmark')) 
      ->appendChild($dom->createElement('error', 'ä and å')); 

$dom->formatOutput = true; 
echo $dom->saveXml(); 

輸出完全有效:

<?xml version="1.0" encoding="utf-8"?> 
<translations> 
    <denmark> 
    <error>ä and å</error> 
    </denmark> 
</translations>