2010-12-20 4 views
28

Ich frage mich, ob ich XML in /res/values/strings.xml platzieren könnte? Ich frage das, weil ich nach der XML-Datendatei für meine Anwendung suche, wenn sie noch nicht existiert, dann erstellt sie sie aus den Standardinhalten, die als String-Ressource enthalten sein werden.XML in einer Android-String-Ressource?

Eklipse versucht, die kleiner als und größer als Tags an ihre entsprechenden HTML-Entitäten zu ändern, wenn die GUI die Saiten zu bearbeiten. Ist die Finsternis auf dem richtigen Weg? Weil ich denken sollte, dass es auch als HTML-Entitäten in meine Datei geschrieben wird. Könnte ich getText() anstelle von getString() verwenden, um die Entitäten wieder in Tags umzuwandeln?

Vielen Dank für einen Rat, den Sie geben können.

Antwort

58

Ja, Sie können, verwenden Sie einfach CDATA

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

+2

Ja, das ist genau das, was ich brauchte, ich weiß es etwas unorthodox scheint, für XML eine String-Ressource verwenden, aber ich bin gerade erst anfangen und ich schreibe nur 20 oder so Zeichen. – Olical

2

Es wird offensichtlich nicht funktionieren, es sei denn, Sie fliehen Zeichen dort wie < oder> oder &.

Wenn Sie das XML verschlüsseln, sollte es gut funktionieren, aber wahrscheinlich nicht der beste Weg, es zu tun. Ich würde binäre Ressource bevorzugen.


Für in string.xml setzen, können Sie

String encoded = URLEncoder.encode(xml); 

und Decodierung ist das Gegenteil mit kodieren.

Für binäre, können Sie es im RAW-Ordner speichern und Sie einen binären Stream zu empfangen und zu bespannen und Last drehen.

+0

also beim Schreiben, '' < sollte beispielsweise umgewandelt werden, um '<'? Und durch binäre Ressource würde, dass etwas im rohen Ordner, die Sie kopieren Sie Ihre Datendatei erstellen? – Olical

+0

Siehe meine Update bitte. – Aliostad

1

ich auf diese Weise getan haben:

Setzen Sie Ihre Zeichenfolge in strings.xml

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

Wie zu verwenden:

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

Geschehen