使用RequestHandler-> renderAs XML将`htmlspecialchars()`应用于CDATA

时间:2018-08-09 15:21:49

标签: xml cakephp cakephp-3.0 cdata

我需要将一些描述包装到<![CDATA[...]]>中。

我在做什么:

public function cdata() {
    $description = 'Den snabba bruna räven hoppade över den lata hunden';
    $channel = array();
    $channel['item'] = array(
        'g:description' => '<![CDATA['.$description.']]>',
    );
    $this->RequestHandler->renderAs($this, 'xml');
    $this->set('_rootNode', 'rss');
    $this->set('xmlns:g', 'http://base.google.com/ns/1.0');
    $this->set([
        'channel' => $channel,
    ]);
    $this->set('_serialize', ['xmlns:g','channel']);
}

我得到的是什么

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <item>
      <g:description>&lt;![CDATA[Den snabba bruna räven hoppade över den lata hunden]]&gt;</g:description>
    </item>
  </channel>
</rss>

我想要什么:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <item>
      <g:description><![CDATA[Den snabba bruna räven hoppade över den lata hunden]]></g:description>
    </item>
  </channel>
</rss>

问题:

CDATA获取html特殊字符,并将<>转换为&lt;&gt;。这是an example of what I needsource),请参见第二个示例演示CDATA的使用部分。

我用Google搜索了cakephp 3xmlcdata的各种组合,但没有发现任何东西,特别是检查了文档,在这里。请帮忙!

1 个答案:

答案 0 :(得分:1)

(尚未)不支持,XML视图内部使用| ISSUEID | 1_QUESTION | 1_ANSWER | 1_ANSWERCOMMENT | 2_QUESTION | 2_ANSWER | 2_ANSWERCOMMENT | 3_QUESTION | 3_ANSWER | 3_ANSWERCOMMENT | |---------|-------------------|----------|-----------------|--------------|----------|-----------------|-----------------|----------|-----------------| | 6877 | Do you wanna wait | YES | TEST1 | How about it | Its okay | TEST2 | Sample question | (null) | TEST3 进行序列化,而对所有非数字内容使用Xml::fromArray()节点。

就目前而言,如果您需要DOMText部分,则必须放弃使用序列化,并自己(在视图模板中)构建XML。