我正在创建一个带有DOM的XML文档,并从我需要放入元素的数据库中获取像ä和å这样的HTML有趣字符。但我真的无法让它发挥作用。
在元素中添加CDATA HTML的正确方法是什么,这样我的输出就像这样:
<TRANSLATIONS>
<DENMARK>
<ERRORADDRESSLINE1REQUIRED><![CDATA[ä å]]></ERRORADDRESSLINE1REQUIRED>
</DENMARK>
</TRANSLATIONS>
使用:
$sData = "<![CDATA[" . $value . "]]>";
$objLabel = $objXmlDoc->createElement($label, $sData);
并没有真正做到这一点
并附加$objXmlDoc->createCDATASection($value)
会在另一个标签旁边创建一个元素,而不是在标签内。
我忽略了什么?
答案 0 :(得分: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('ä å'));
$dom->formatOutput = true;
echo $dom->saveXml();
输出:
<?xml version="1.0" encoding="utf-8"?>
<translations>
<denmark>
<error><![CDATA[ä å]]></error>
</denmark>
</translations>
但是当您使用UTF-8时,不需要将ä和å放入CDATA部分:
$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>