2011-08-12 12 views
3

DOMでXML文書を作成していて、要素内に配置する必要があるデータベースから、äとåのようなHTML面白い文字を取得しています。しかし、私はそれを実際に働かせることはできません。dom xml要素でcdata(html)を取得する

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

本当にトリックをしない 及びこれを使用して

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

:私の出力は次のようになるように、要素にCDATA HTMLを追加するための適切な方法は何ですか

$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> 

しかしときCDATAセクションに、AおよびAを配置する必要があってはなりませんあなたは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> 
関連する問題