Android:如何将<string>元素注入XML中的另一个<string>元素?

Fra*_*lli 9 xml string android code-injection

我想知道是否有一种方法可以将<string>XML文件中定义的元素插入/注入到另一个<string>元素中,只需使用XML即可.

例如,我可以:

<string name="author">Francesco</string>`
Run Code Online (Sandbox Code Playgroud)

我正在寻找类似的东西:

<string name="about_application">Author: @string/author</string>`
Run Code Online (Sandbox Code Playgroud)

getString(R.string.about_application)将导致"作者:Francesco".

我知道我可以使用String.format(string, formatArgs)例如Java代码中的两个元素组合:

<string name="author">Francesco</string>
<string name="about_application">Author: %1$s</string>`
Run Code Online (Sandbox Code Playgroud)

然后在代码中使用

String.format(getString(R.string.about_application), getString(R.string.author))
Run Code Online (Sandbox Code Playgroud)

但是我想直接用XML来做.

任何人都可以建议我这样做吗?

Mad*_*sen 15

如果我理解你想要做什么,那么内部(解析)的一般实体可能会帮助你实现你想要的.

如何将值"Francesco"定义为名为"auth"的实体,然后在XML中使用它的示例:

<?xml version="1.0"?>
<!DOCTYPE doc [
  <!ENTITY auth "Francesco">
]>
<doc>
  <string name="author">&auth;</string>
  <string name="about_application">Author: &auth;</string>
</doc>
Run Code Online (Sandbox Code Playgroud)

当XML解析器读取时,文档将被解析和评估,或"看到",如下所示:

<?xml version="1.0"?>
<doc>
  <string name="author">Francesco</string>
  <string name="about_application">Author: Francesco</string>
</doc>
Run Code Online (Sandbox Code Playgroud)

  • 这就像间接的间接:-).问题可能是在翻译string.xml(其他文件夹中的副本)时,您忘记了localize&auth;.此外,每个翻译仍然需要包含&auth的所有字符串标签; 然后.但是,是的,这是最好的,因为它必须是静态的(因此xml文件可以是二进制的). (2认同)