2
由於我們知道CDATA不能嵌套,所以我喜歡使用Using CDATA inside another CDATA中提供的解決方案,該解決方案將]]>
替換爲]]]]><![CDATA[>
。任何與相鄰CDATA相關的標準?
因此
<Root>
<![CDATA[
<AAA>
<![CDATA[
<BBB>hello world</BBB>
]]>
</AAA>
]]>
</Root>
變得
<Root>
<![CDATA[
<AAA>
<![CDATA[
<BBB>hello world</BBB>
]]]]><![CDATA[>
</AAA>
]]>
</Root>
的XML是我的API,這將通過其他程序不我的控制下使用的響應。
對於.NET,我的實驗顯示InnerText
可以在所有CDATA部分中輸出文本。
var Root= doc.SelectNode("/Root");
var cdata = Root.InnerText;
CDATA是
<AAA>
<![CDATA[
<BBB>hello world</BBB>
]]>
</AAA>
是否.NET的行爲符合什麼標準?是否有任何標準說明如何處理相鄰的CDATA?如果我的API返回相鄰的CDATA,其他程序或編程語言是否有問題處理呢?
我找不到InnerText的定義,可能規範使用另一個詞,我不知道。什麼是元素的InnerText,它是所有CDATA節中的文本?相鄰的CDATA部分是否被視爲一個? – Gqqnbig
InnerText是給定元素內的字符數據(https://www.w3.org/TR/REC-xml/#dt-chardata)的.NET等效項。這些字符數據的每個部分都可以用CDATA轉義。其中:當你調用InnerText時,NET將會失敗。在最大轉角情況下,您可以將每個字符放在自己的CDATA部分中。在其他(通常)角落案例中,您不使用任何CDATA轉義。如果CDATA部分相鄰或不相關。 CDATA部分中的文本不會被進一步解釋(這是CDATA轉義的全部要點,以保護XML解釋中的文本) – TToni
此外,https://dom.spec.whatwg.org/#interface-text表示'text .wholeText ' 返回所有直接文本節點同胞的**組合數據**。 – Gqqnbig