我对 Android 字符串资源的一些转义规则感到困惑,尤其是在涉及 HTML 时。
在正常的 XML 编码规则下,考虑以下编码 -
一个。“美食与酒吧”
<string name="a">Foo & Bar</string>
湾。“美食与酒吧”
<string name="b">Foo &amp; Bar</string>
C。“Foo <b>&</b> 酒吧”
<string name="c">Foo <b>&amp;</b> Bar</string>
但是由于粗体标签被允许作为 XML DOM 的一部分,显然你可以这样做 -
<string name="d">Foo <b>&</b> Bar</string>
这就是我感到困惑的地方,因为就好像一个字符串可以是 HTML或纯文本,而没有任何明确的意图指示。
所以我的问题是,使用结合了上述内容的案例:
编码 html 字符串"Foo & Bar <b>& Baz</b>" - 第一个&符号的规则与第二个不同吗?我这样做吗?-
<string name="e">Foo & Bar <b>& Baz</b></string>
或这个?-
<string name="f">Foo &amp; Bar <b>& Baz</b></string>
“f”似乎很疯狂,但如果答案是“e”,那么解码器怎么知道不像在示例“a”中那样解码 & 符号?仅仅因为字符串有子元素?
请注意,我问不是因为我在编码字符串,我问是因为我在解析它们。我对“使用 CDATA”之类的解决方案不感兴趣——我正在尝试理解规则。