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