Atom提要解析器应如何处理XML的下面一行在饲料:解析Atom XML提要时,应如何处理冲突的CDATA和实体转义元素?
<title type="html"><![CDATA[Johnson & Johnson]]></title>
为了讨论的缘故,让我们假设最初预期的文本实际上Johnson & Johnson
。我碰到这个online discussion来到这个问题,好像有2个不同的观点:
Opinion #1 - claims that this content is double-encoded。文本“约翰逊&约翰逊”文本已被实体转义,然后通过包装在CDATA节再次编码。他指出,行为良好的xml解析器将返回
Johnson & Johnson
,因为XML spec状态应该如何处理CDATA编码数据。Opinion #2 - claims that the Atom spec takes precedent。他指出CDATA是一种传递。
Johnson & Johnson
作为Johnson & Johnson
出现。如果这只是一个XML文档,它就会在那里结束。但是,因为它是Atom,我们必须查看Atom spec以确定正确的行为。原子规范指出任何带有type="html"
的元素都包含实体转义的html。因此,我们应该可以自由解码它。
其中这些事实上是正确的?如果适当的Atom XML解析器产生: Johnson & Johnson
或Johnson & Johnson
给出这种特殊情况?
你的声明“所以应该再被解析为HTML”就是模糊进来我。如果Atom库(通常用于'type =“html”'元素)在没有CDATA的情况下对其元素的文本进行html解码,那么您是否声明它也应该对包装在CDATA中的元素文本进行html解码? – mmcdole
*如果Atom库,通常为type =“html”* - Atom库不应该,HTML呈现器应该。 – Quentin
当规范明确指出它们被转义出来时,为什么Feed提取解析器库不应该自己去标记为'type =“html”'的元素?当您询问Python的'feedparser'库或PHP的'Simplepie'库时,将其标题定义为:'
title
'。这个问题围绕着CDATA元素是否应该规避他们在将数据解析为非转义形式时所做的典型的解决方案。 – mmcdole