android - 何时转义字符串资源中的实体?

标签 android xml android-resources

我对一些 escaping rules of Android string resources 感到困惑,尤其是涉及 HTML 时。

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

一个。 “Foo & Bar”

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

“Foo & Bar”

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

“Foo & 酒吧”

<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 纯文本,而没有任何明确的 Intent 指示。

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

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

<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”之类的解决方案不感兴趣 - 我正在尝试了解规则。

最佳答案

显示

Foo &酒吧 &巴兹

使用:

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

关于android - 何时转义字符串资源中的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996352/

相关文章:

android - 编辑 SystemUI 布局 XML

php - 从 XML php 获取值后出现奇怪的字符

java - Android,从字符串中获取资源ID?

java - Android中如何管理数据

android - 调用 Web 服务或任何网络调用时应用程序挂起

android - 不是 Room 数据库迁移中的原始类型

android - ActionBarCompat 下拉菜单上的样式单选按钮

c# - 在 C# 中实时编辑 xml。删除包含特定值的节点

java - 第二个 Activity 的 TextView 内的文本超出了屏幕,但适用于更大的显示屏手机

java - 如何检查服务是否在 Android 8 (API 26) 上运行?