49

I was wondering if I could place XML within /res/values/strings.xml? I ask this because I am checking for the XML data file for my application, if it does not exist yet then it creates it from the default contents that will be contained as a string resource.

Eclipse tries to change the less than and greater than tags to their corresponding HTML entities when using the GUI to edit the strings. Is eclipse on the right track? Because I should think that it will be written out into my file as HTML entities too. Could I use getText() rather than getString() to convert the entities back into tags?

3 Answers 3

87

Yes you can, just use CDATA

<string name="stringName1"><![CDATA[<html>bla</html>]]></string>

Sign up to request clarification or add additional context in comments.

1 Comment

Yep, thats exactly what I needed, I know it seems slightly unorthodox, using a string resource for XML, but I am just starting out and I am only writing 20 or so characters.
2

It will obviously not work unless you escape characters in there such as < or > or &.

If you do encode the XML, it should work fine but probably not the best way to do it. I would prefer binary resource.


For putting in string.xml, you may encode using

String encoded = URLEncoder.encode(xml);

And decoding is the opposite.

For binary, you place it in RAW folder and you get a binary stream and turn it to string and load.

1 Comment

So when writing, &lt; for example, should be converted to <? And by binary resource, would that be something in the raw folder that you copy over to create your data file?
2

I have done this way:

Put your string in strings.xml

<string name="my_string"><![CDATA[Your long text here]]></string>

How to use:

<TextView
    android:id="@+id/textView"
    android:text="@string/my_string"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Done

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.