2010-12-20 115 views
28

我想知道是否可以在/res/values/strings.xml之内放置XML?我问这是因为我正在检查我的应用程序的XML数据文件,如果它尚不存在,那么它会从默认内容中创建它,并将其作为字符串资源包含在内。Android字符串资源中的XML?

当使用GUI编辑字符串时,Eclipse会尝试将小于和大于标记更改为其对应的HTML实体。日食是否正确?因为我认为它会以HTML实体的形式写入我的文件。我可以使用getText()而不是getString()将实体转换回标记吗?

感谢您的任何建议,你可以给。

回答

58

是的,你可以只使用CDATA

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

+2

是的,这正是我所需要的,我知道它似乎有点不正统,使用XML的字符串资源,但我刚刚开始,我只写了20左右的字符。 – Olical 2010-12-20 13:39:53

2

它显然不工作,除非你在那里转义字符,如<或>或&。

如果你编码XML,它应该可以正常工作,但可能不是最好的方法。我更喜欢二进制资源。


对于投入string.xml,你可以编码使用

String encoded = URLEncoder.encode(xml); 

和解码是相反的。

对于二进制文件,您将其放在RAW文件夹中,并获取二进制流并将其转为字符串并加载。

+0

所以?而通过二进制资源,这是否是您复制创建数据文件的原始文件夹中的东西? – Olical 2010-12-20 13:34:45

+0

请参阅我的更新。 – Aliostad 2010-12-20 13:39:16

1

我已经做了这种方式:

把你的strings.xml

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

如何使用:

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

书写时,``<例如,应转换为`<`完成