我对一些 escaping rules of Android string resources 感到困惑,尤其是涉及 HTML 时。
在正常的 XML 编码规则下,考虑以下编码 -
一个。 “Foo & Bar”
<string name="a">Foo & Bar</string>
“Foo & Bar”
<string name="b">Foo &amp; Bar</string>
“Foo & 酒吧”
<string name="c">Foo <b>&amp;</b> Bar</string>
但是由于粗体标记被允许作为 XML DOM 的一部分,显然你可以这样做 -
<string name="d">Foo <b>&</b> Bar</string>
这是我感到困惑的地方,因为它好像一个字符串可以是 HTML 或 纯文本,而没有任何明确的 Intent 指示。
所以我的问题是,使用结合上述内容的案例:
要编码 html 字符串 "Foo & Bar & Baz" - 第一个和号的规则与第二个不同吗?我这样做吗? -
<string name="e">Foo & Bar <b>& Baz</b></string>
还是这个? -
<string name="f">Foo &amp; Bar <b>& Baz</b></string>
“f”看起来很疯狂,但如果答案是“e”,那么解码器如何知道不像示例“a”中那样解码“&”符号呢?就因为字符串有子元素?
请注意,我不是因为正在编码字符串才提问,而是因为我正在解析它们才提问。我对“使用 CDATA”之类的解决方案不感兴趣 - 我正在尝试了解规则。
最佳答案
显示
使用:
<string name="f">Foo &amp; Bar <b>&amp; Baz</b></string>;
关于android - 何时转义字符串资源中的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996352/