Android字符串资源中如何用CDATA写入&、 及指定字符串?
嘿,这个问题我之前帮不少开发者解决过,其实用CDATA处理起来特别简单,我给你拆解清楚~
在Android字符串资源中用CDATA处理特殊内容
XML里的CDATA区块(<![CDATA[...]]>)的核心作用就是让包裹的内容跳过XML解析,直接以纯文本形式被读取,所以不管是&这种XML转义字符,还是换行需求,都能轻松搞定。
1. 同时写入&和换行的实现
如果你需要的字符串里既有&,又要包含显示用的换行,直接把内容塞进CDATA就行:
<string name="mixed_content"><![CDATA[Upload Files & Fill Details\nThen Submit Form]]></string>
要是你只是想在XML代码里换行(方便自己阅读,不影响APP显示),也可以这么写:
<string name="mixed_content"><![CDATA[Upload Files & Fill Details Then Submit Form]]></string>
⚠️ 注意:XML代码里的实际换行,在Android中会被识别成空格;如果要让APP界面显示换行,还是得用\n转义符。
2. 输出“Attach Photos & Write Comments”的写法
你想要最终得到的字符串就是Attach Photos & Write Comments(保留&而不是被XML解析成&),用CDATA刚好能满足——直接把整个目标字符串包裹进去,XML不会解析里面的转义字符:
<string name="attach_comment_action"><![CDATA[Attach Photos & Write Comments]]></string>
之后在代码里调用getString(R.string.attach_comment_action),拿到的就是完全符合要求的字符串啦。
小提示
CDATA区块里不能出现]]>这个组合,因为这会被当作CDATA的结束标记。如果你的内容里刚好有这个(概率极低),可以拆分一下或者做简单处理。
内容的提问来源于stack exchange,提问作者Geek Tanmoy
相关产品推荐
相关产品推荐

