【问题标题】:Unintended formatting using PHP DomDocument使用 PHP DomDocument 意外格式化
【发布时间】:2013-11-21 00:44:10
【问题描述】:

我正在尝试使用 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>&lt;![CDATA[&lt;p&gt;blah, blah, blah.&lt;/p&gt;]]&gt;</FormattedContent>

有什么想法吗?

【问题讨论】:

    标签: php domdocument cdata


    【解决方案1】:

    对于 CDATA 部分,您必须使用 DOMDocument::createCDATASection,例如

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

    您的 $elementValue 参数应该只包含原始字符串,例如

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

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2011-03-02
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多