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

20

我正在尝试存储一个包含查询参数的完整URL:

www.miosito.net?prova&reg=bis

但这会引起问题,因为&reg®实体很相似,而Android告诉我html实体未编写良好。

我需要这个,因为每个地区都使用完全不同的URL查询参数集。

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

4个回答

17
问题不在于&req,而在于&自身。对于XML/HTML,您需要使用实体&(或&)。但是对于URL,您应该将字符串进行URL编码(请参见文档),在这种情况下,所说的&应该被替换为%26。因此,您的最终字符串应如下所示:

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

请注意,保留了原始HTML标签。

6

请按照以下方式存储:

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

&amp; 是 XML 中 & 符号的等价表示。


1

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

<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'用于十进制数等。

1
无法工作:"实体引用“reg”必须以';'分隔符结束。" - Marcin Orlowski

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接