我正在尝试使用PHP的DomDocument类在XML文档中包含格式化元素。
我写了以下函数:
function awstAddFormattedElement ($mySessionParams, $parentElement, $elementName, $elementValue) {
$xmlDoc = $mySessionParams['xmlDoc'];
$element = $xmlDoc->createElement($elementName,$elementValue);
$element = $parentElement->appendChild($element);
$myessionParams['element'] = $element;
return $mySessionParams;
}
问题在于,当我调用它时,$ elementValue中的实体会自动编码,而我正在调用的服务会拒绝它。
$elementValue = '<![CDATA['.
'<p>blah, blah, blah.</p>'.
']]>';
所以,当我这样做时:
awstAddFormattedElement ($mySessionParams, $parentElement, 'FormattedContent', $elementValue)
我希望在生成的XML中看到类似的内容:
<FormattedContent><![CDATA[<p>blah, blah, blah.</p>]]></FormattedContent>
相反,我得到以下内容:
<FormattedContent><![CDATA[<p>blah, blah, blah.</p>]]></FormattedContent>
有什么想法吗?
答案 0 :(得分:1)
对于CDATA部分,您必须使用DOMDocument::createCDATASection
,例如
$element = $xmlDoc->createElement($elementName);
$element->appendChild($xmlDoc->createCDATASection($elementValue));
$parentElement->appendChild($element);
您的$elementValue
参数应该只包含原始字符串,例如
$elementValue = '<p>blah, blah, blah.</p>';