2013-11-21 5 views
1

Я пытаюсь включить форматированный элемент в документ XML, используя класс DomDocument PHP.Непреднамеренное форматирование с использованием PHP DomDocument

я написал следующую функцию:

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>&lt;![CDATA[&lt;p&gt;blah, blah, blah.&lt;/p&gt;]]&gt;</FormattedContent> 

Любые идеи?

ответ

1

Для секций CDATA, вы должны использовать DOMDocument::createCDATASection, например

$element = $xmlDoc->createElement($elementName); 
$element->appendChild($xmlDoc->createCDATASection($elementValue)); 

$parentElement->appendChild($element); 

Ваш $elementValue аргумент должен содержать только голое строку, например

$elementValue = '<p>blah, blah, blah.</p>'; 
+0

Спасибо. Это сработало. – EastsideDeveloper

Смежные вопросы