【发布时间】:2014-06-11 18:46:49
【问题描述】:
Android developer docs for string resources 显示了一个示例字符串,它也是一个有效的 Java 变量(“hello_world”),它解释说可以通过R.string.hello_world 访问
我的问题是是否允许 XML 包含 无效 作为 Java 变量的字符串名称属性。例如,以下字符串键是否允许作为 XML 资源名称,如果允许,如何通过 Java 中的R.string.<name> 访问它们?
<string name="hello world" />
<string name="hello.world" />
<string name="42 hello world" />
反对者请注意:我并没有真正尝试这样做。我正在尝试了解文件格式允许什么以及如何转换资源。
我要问的内容和原因的一些背景:
我的软件将键/值对转换为 XML 资源,并自动将所有键转换为有效的 Java 变量,因此“hello-world”被转换为“hello_world”。然而,一位用户报告说他们希望保留“hello.world”作为 XML 名称属性的值。他们告诉我,Android builder 会将其转换为“hello_world”。所以我问这个问题是为了弄清楚哪些情况我应该自动处理,哪些情况应该允许通过。
【问题讨论】:
-
这里真正的问题是:“你为什么想要这样做?”
-
我可以清楚地看到这不是好的做法。你已经得出一个想要达到的结论是错误的。我已经根据我实际想要实现的目标更新了我的问题。
-
我想您可能仍然缺少一些上下文。您的用户与 xml 属性有什么关系?它是应用程序的用户,还是库的用户?
-
它是一个应用程序 - 一个文件格式转换器。我引用的 XML 属性是字符串元素
<string name="..">中的“名称”属性我在我的问题中错误地输入了“键”,现在我已经修复了 -
现在更有意义了。如果转义正确,您的 XML 属性可以包含任何有效的 UTF-8。现在,如果您的用户使用该 xml 并尝试将其用作 strings.xml,那么 Android 构建器将会咳嗽或从中获得一些乐趣。没有办法解决这个问题。
标签: java android localization