xml - 使用 RequestHandler->renderAs XML 将 `htmlspecialchars()` 应用于 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><![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'd,<
并>
转换为<
and >
。这是我需要的示例(源),请参阅第二个示例演示 CDATA部分的使用。
cakephp 3
我用谷歌搜索了,xml
和的各种组合cdata
,但什么也没找到,特别是检查了文档和这里。请帮忙!
解决方案
它(尚未)受支持,XML 视图在内部Xml::fromArray()
用于序列化,它使用DOMText
节点来表示所有非数字内容。
现在,如果您需要CDATA
部分,您将不得不放弃使用序列化,并自己构建 XML(在视图模板中)。
推荐阅读
- stata - 如何在Stata中用二进制代码替换文本
- reactjs - 使用钩子使用 react-hook-form 在表单提交时显示成功消息
- html - 内联块是否因为设置了边距而不起作用?
- c# - ASP.net MVC中基于下拉列表选择的数据验证
- angular - 如何在 Angular 8 中排序对象数组?
- reactjs - 无法使用reactjs发送电子邮件附件
- email - 用 PHP 生成的邮件进入垃圾邮件(仅限 Gmail)
- python - 使用 GAN 生成胸部 X 射线图像
- python-3.x - 如何使用 lambda 函数从两个 python 数据帧中选择较大的值,同时按日期比较它们?
- visual-studio - Flutter 不会生成 lib/main.dart