我对某些escaping rules of Android string resources感到困惑,特别是在涉及HTML时。
在普通的XML编码规则下,请考虑以下编码 -
一个。 “Foo& Bar”
<string name="a">Foo & Bar</string>
湾“Foo&amp; amp; Bar”
<string name="b">Foo &amp; Bar</string>
℃。 “Foo&lt; b&gt;&amp; amp;&lt; / b&gt; Bar”
<string name="c">Foo <b>&amp;</b> Bar</string>
但是,由于粗体标记允许作为XML DOM的一部分,显然你可以这样做 -
<string name="d">Foo <b>&</b> Bar</string>
这就是我感到困惑的地方,因为它就像一个字符串可以是HTML 或纯文本而没有明确的意图指示。
所以我的问题,使用结合上述情况的案例:
要编码html字符串“Foo&amp; amp; Bar&lt; b&gt;&amp; amp; Baz&lt; / b&gt;” - 第一个&符号的规则是否与第二个不同?我这样做吗? -
<string name="e">Foo & Bar <b>& Baz</b></string>
还是这个? -
<string name="f">Foo &amp; Bar <b>& Baz</b></string>
“f”似乎很疯狂,但如果答案是“e”,那么解码器如何知道不像示例“a”那样解码&符号?只是因为字符串有子元素?
请注意我没有问,因为我正在编码字符串,我问,因为我解析它们。我对“使用CDATA”这样的解决方案不感兴趣 - 我正试图理解这些规则。
答案 0 :(得分:-1)
显示
&lt; string name =&#34; f&#34;&gt; Foo&amp; amp; Bar&lt; b&gt;&amp; amp;巴兹&LT; / B&GT;&LT; /串GT;
使用:
<string name="f">Foo &amp; Bar <b>&amp; Baz</b></string>;