XML dentro de un recurso de cadena de Android?

2 minutos de lectura

avatar de usuario
olical

Me preguntaba si podría colocar XML dentro /res/values/strings.xml? Pregunto esto porque estoy buscando el archivo de datos XML para mi aplicación, si aún no existe, lo crea a partir del contenido predeterminado que se incluirá como un recurso de cadena.

Eclipse intenta cambiar las etiquetas menor que y mayor que a sus entidades HTML correspondientes cuando usa la GUI para editar las cadenas. ¿Eclipse está en el camino correcto? Porque debería pensar que también se escribirá en mi archivo como entidades HTML. ¿Podría usar getText() más bien que getString() convertir las entidades de nuevo en etiquetas?

Sí puedes, solo usa CDATA

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

  • Sí, eso es exactamente lo que necesitaba, sé que parece un poco poco ortodoxo, usar un recurso de cadena para XML, pero recién estoy comenzando y solo estoy escribiendo 20 o más caracteres.

    – Olical

    20 de diciembre de 2010 a las 13:39

avatar de usuario
Alióstad

Obviamente, no funcionará a menos que introduzca caracteres de escape como o &.

Si codifica el XML, debería funcionar bien, pero probablemente no sea la mejor manera de hacerlo. Preferiría recurso binario.


Para poner string.xml, puede codificar usando

String encoded = URLEncoder.encode(xml);

Y decodificar es lo contrario.

Para binario, lo coloca en la carpeta RAW y obtiene una secuencia binaria y la convierte en cadena y carga.

  • Entonces, al escribir, &lt; por ejemplo, debe convertirse en <? Y por recurso binario, ¿sería algo en la carpeta sin procesar que copia para crear su archivo de datos?

    – Olical

    20 de diciembre de 2010 a las 13:34

avatar de usuario
Hiren Patel

lo he hecho de esta manera:

Ponga su cuerda en cadenas.xml

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

Cómo utilizar:

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

Hecho

¿Ha sido útil esta solución?