2

对 Android 字符串资源的一些转义规则感到困惑,尤其是在涉及 HTML 时。

在正常的 XML 编码规则下,考虑以下编码 -

一个。“美食与酒吧”

<string name="a">Foo &amp; Bar</string>

湾。“美食与酒吧”

<string name="b">Foo &amp;amp; Bar</string>

C。“Foo <b>&</b> 酒吧”

<string name="c">Foo &lt;b&gt;&amp;amp;&lt;/b&gt; Bar</string>

但是由于粗体标签被允许作为 XML DOM 的一部分,显然你可以这样做 -

<string name="d">Foo <b>&amp;</b> Bar</string>

这就是我感到困惑的地方,因为就好像一个字符串可以是 HTML纯文本,而没有任何明确的意图指示。

所以我的问题是,使用结合了上述内容的案例:

编码 html 字符串"Foo & Bar <b>& Baz</b>" - 第一个&符号的规则与第二个不同吗?我这样做吗?-

<string name="e">Foo &amp; Bar <b>&amp; Baz</b></string>

或这个?-

<string name="f">Foo &amp;amp; Bar <b>&amp; Baz</b></string>

“f”似乎很疯狂,但如果答案是“e”,那么解码器怎么知道不像在示例“a”中那样解码 & 符号?仅仅因为字符串有子元素?

请注意,我问不是因为我在编码字符串,我问是因为我在解析它们。我对“使用 CDATA”之类的解决方案不感兴趣——我正在尝试理解规则。

4

1 回答 1

-1

显示

<string name="f">Foo & 酒吧 <b>& 巴兹</b></string>

利用:

 <string name="f">Foo &amp;amp; Bar <b>&amp;amp; Baz</b></string>;
于 2014-05-22T07:10:57.127 回答