web-dev-qa-db-fra.com

XML dans une ressource de chaîne Android?

Je me demandais si je pouvais placer XML dans /res/values/strings.xml? Je pose cette question parce que je vérifie le fichier de données XML pour mon application, s'il n'existe pas encore, il le crée à partir du contenu par défaut qui sera contenu en tant que ressource de chaîne.

Eclipse essaie de changer les balises inférieur et supérieur à leurs entités HTML correspondantes lors de l'utilisation de l'interface graphique pour modifier les chaînes. Eclipse est-il sur la bonne voie? Parce que je devrais penser qu'il sera également écrit dans mon fichier en tant qu'entités HTML. Puis-je utiliser getText() plutôt que getString() pour reconvertir les entités en balises?

42
Olical

Oui, vous pouvez simplement utiliser CDATA

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

78
Alexander Stolz

J'ai fait comme ça:

Mettez votre chaîne dans strings.xml

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

Comment utiliser:

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

Terminé

2
Hiren Patel

Cela ne fonctionnera évidemment que si vous y échappez des caractères tels que <ou> ou &.

Si vous encodez le XML, cela devrait fonctionner correctement mais probablement pas la meilleure façon de le faire. Je préférerais une ressource binaire.


Pour mettre en string.xml, vous pouvez encoder en utilisant

String encoded = URLEncoder.encode(xml);

Et le décodage est le contraire.

Pour le binaire, vous le placez dans le dossier RAW et vous obtenez un flux binaire et le transformez en chaîne et chargez.

2
Aliostad