亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法在xml中轉義CDATA結束令牌?

有沒有辦法在xml中轉義CDATA結束令牌?

繁花不似錦 2019-10-17 10:47:27
我想知道是否有任何方法可以]]>在xml文檔的CDATA節中轉義CDATA結束標記()?;蛘?,更一般而言,如果在CDATA中有一些要使用的轉義序列(但如果存在,我想無論如何都應該僅對開始或結束令牌進行轉義)?;旧?,您可以在CDATA中嵌入一個開始或結束令牌,并告訴解析器不要解釋它,而是將其視為另一個字符序列??赡艿脑挘绻l現要嘗試做的話,應該重構您的xml結構或代碼,但是即使過去三年左右我每天都在使用xml,但我從未遇到過這個問題,我想知道是否有可能。只是出于好奇。編輯:除了使用html編碼...
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

顯然,這個問題純粹是學術性的。幸運的是,它有一個非常明確的答案。


您無法轉義CDATA結束序列。XML 規范的生產規則20 非常明確:


[20]    CData      ::=      (Char* - (Char* ']]>' Char*))

編輯:此產品規則的字面意思是“一個CData節可能包含您想要的任何內容,但順序為']]>'。無例外。”。


EDIT2:同一部分還顯示:


在CDATA節中,只有CDEnd字符串被識別為標記,因此左尖括號和“&”號可能以其原義形式出現;它們不需要(也不能)使用“ <”和“ &” 進行轉義。CDATA節不能嵌套。


換句話說,不可能使用實體引用,標記或任何其他形式的解釋語法。CDATA節中唯一解析的文本是]]>,它終止該節。


因此,不可能]]>在CDATA節中轉義。


EDIT3:同一部分還顯示:


2.7 CDATA節


[定義:CDATA節可能出現在字符數據可能出現的任何地方;它們用于轉義包含字符的文本塊,否則這些字符將被視為標記。CDATA節以字符串“ <![CDATA [”]開頭,以字符串“]]>”:]結尾:]


然后,在可能出現字符數據的任何地方都可能有一個CDATA節,包括多個相鄰的CDATA節,而不是單個CDATA節。這樣就可以拆分]]>令牌并將令牌的兩個部分放在相鄰的CDATA節中。


例如:


<![CDATA[Certain tokens like ]]> can be difficult and <invalid>]]> 

應該寫成


<![CDATA[Certain tokens like ]]]]><![CDATA[> can be difficult and <valid>]]> 


查看完整回答
反對 回復 2019-10-17
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

您必須將數據分解成部分隱藏起來]]>。


整個過程如下:


<![CDATA[]]]]><![CDATA[>]]>


首先<![CDATA[]]]]>有]]。第二個<![CDATA[>]]>有>。


查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 671 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號