Android:如何在string.xml资源文件中存储url?

时间:2012-09-02 16:01:51

标签: android xml string url

我正在尝试存储一个完全限定的网址,还有查询参数:

www.miosito.net?prova&reg=bis

但它导致了一个问题,因为&reg类似于®实体,并且android告诉我那个并且html实体编写得不好。

我需要这个,因为每个语言环境都使用完全不同的url查询参数集。

我尝试使用[[CDATA[.. ]],但xml解析器不喜欢这种语法。

4 个答案:

答案 0 :(得分:16)

问题不在于&req,而在于&本身。对于XML / HTML,您必须使用&实体(或&),但对于URL,您应该使用URL编码(see docs)字符串,在这种情况下说{{1应该用&替换。所以你的最终字符串应如下所示:

  

www.miosito.net?prova%26reg=bis

答案 1 :(得分:5)

像这样存储:

<string name="my_url">"www.miosito.net?prova&amp;reg=bis"</string>

其中&amp;&符号 &的XML等价物。

答案 2 :(得分:1)

百分比编码可以解决问题:http://en.wikipedia.org/wiki/Percent-encoding 你基本上会有这样的东西:www.miosito.net?prova%26reg = bis

答案 3 :(得分:1)

您可以将您的网址用双引号括起来,例如:

<string name="my_url">"www.miosito.net?prova&reg=bis"</string>

这是在Android中包含字符串资源的推荐方法。

更新1:有关详细信息,请查看以下链接:

http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

更新2: @WebnetMobile.com:正确,确实:) '&安培;'正在被xml处理为特殊字符并且用引号括起来不起作用。我试过了     www.miosito.net?prova%26reg=bis

它也没有成功。我甚至尝试用引号括起来,但仍然没有用。我错过了什么吗?
同时,以下工作:

    <string name="my_url">www.miosito.net%1$sprova%2$sreg=bis</string>

然后在代码中:

    Resources resources=getResources();
    String url=String.format(resources.getString(R.string.my_url),"?","&") ;

'%1 $ s'和'%2 $ s'是格式说明符,非常类似于在C.中的printf中使用的''%1 $ s'用于字符串,'%2 $ d'用于小数数字等等。