views:

49

answers:

2

Hello everyone!

I would like to know whether there is a way to insert/inject a <string> element defined in an XML file into another <string> element, doing that just with XML.

For example I could have:

<string name="author">Francesco</string>`

and I am looking for something like:

<string name="about_application">Author: @string/author</string>`

so that getString(R.string.about_application) would result in "Author: Francesco".

I know that I could combine the two elements in Java code using String.format(string, formatArgs)like for example:

<string name="author">Francesco</string>
<string name="about_application">Author: %1$s</string>`

and then in code use

String.format(getString(R.string.about_application), getString(R.string.author))

but I would like to do it in XML directly. Can anyone suggest me a way to do it?

Thank you very much.

A: 

Unfortunately I don't think that is possible. I asked a similar question a while ago, and was told it wasn't possible.

Mayra
Thank you anyway! Actually I also think that there is no standard way to do it, even if the "trick" Mads Hansen proposed could do the job.
francescofel
+3  A: 

If I understand what you are looking to do, then internal (parsed) general entities might help you achieve what you are looking for.

An example of how you can define the value "Francesco" as an entity called "auth" and then use it in your XML:

<?xml version="1.0"?>
<!DOCTYPE doc [
  <!ENTITY auth "Francesco">
]>
<doc>
  <string name="author">&auth;</string>
  <string name="about_application">Author: &auth;</string>
</doc>

When read by an XML parser, the document will be parsed and evaluated, or "seen", as:

<?xml version="1.0"?>
<doc>
  <string name="author">Francesco</string>
  <string name="about_application">Author: Francesco</string>
</doc>
Mads Hansen
Thank you! It works well when I reference an internal entity from an xml element in the same file, while I am having problems to reference an external entity defined in another xml file. Anyway, I am not sure whether this kind of mechanism should be used with Android /res/values/ xml files, I think it is a little far from Android "standard" way of manage them.
francescofel