首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用RequestHandler->renderAs XML将` `htmlspecialchars()`应用于CDATA

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

Stack Overflow用户
提问于 2018-08-09 23:21:49
回答 1查看 92关注 0票数 1

我需要将一些描述封装到<![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得到htmlspecialchars,<>被转换成&lt;&gt;。下面是CDATA (source),参见第二个示例演示CDATA的使用。

我在谷歌上搜索了cakephp 3xmlcdata的各种组合,但什么也没有找到,特别是查看了文档和这里。请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 03:28:29

目前还不支持,在内部,XML视图使用Xml::fromArray()进行序列化,对所有非数字内容使用DOMText节点。

现在,如果需要XML节,您将不得不放弃使用序列化,而是自己构建CDATA (在视图模板中)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51770727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档