【问题标题】:Android: How store url in string.xml resource file?Android:如何将 url 存储在 string.xml 资源文件中?
【发布时间】:2012-09-02 16:01:50
【问题描述】:

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

www.miosito.net?prova&reg=bis

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

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

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

【问题讨论】:

    标签: android xml string url


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这样存储:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          <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

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

          &lt;string name="my_url"&gt;www.miosito.net%1$sprova%2$sreg=bis&lt;/string&gt;

          然后在代码中:

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

          '%1$s' 和 '%2$s' 是格式说明符,很像 C 中 printf 中使用的内容。'%1$s' 用于字符串,'%2$d' 用于十进制数字等等。

          【讨论】:

          • 它不起作用:“对实体“reg”的引用必须以';'结尾分隔符。”;
          猜你喜欢
          • 1970-01-01
          • 2011-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-26
          • 1970-01-01
          相关资源
          最近更新 更多