我需要将一些描述封装到<![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><![CDATA[Den snabba bruna räven hoppade över den lata hunden]]></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,<
和>
被转换成<
和>
。下面是CDATA (source),参见第二个示例演示CDATA的使用。
我在谷歌上搜索了cakephp 3
、xml
和cdata
的各种组合,但什么也没有找到,特别是查看了文档和这里。请帮帮我!
发布于 2018-08-10 03:28:29
目前还不支持,在内部,XML视图使用Xml::fromArray()
进行序列化,对所有非数字内容使用DOMText
节点。
现在,如果需要XML节,您将不得不放弃使用序列化,而是自己构建CDATA
(在视图模板中)。
https://stackoverflow.com/questions/51770727
复制相似问题