android - 是否可以在 android 中以编程方式创建 string.xml 文件?
问题描述
如何在android studio项目的资源文件中以编程方式创建string.xml文件
例如
"languageKeys": [
{
"key": "welcome_screen_title",
"value": "ZervBee"
},
{
"key": "skip_button",
"value": "தவிர்"
},
{
"key": "walkthrough_title_1",
"value": "மேசையிலிருந்து ஆர்டர்"
},
{
"key": "walkthrough_title_2",
"value": "ஆன்லைனில் பணம் செலுத்துங்கள்"
},
{
"key": "walkthrough_title_3",
"value": "வரிசைகளை தவிர்க்கவும்"
},
{
"key": "walkthrough_desc_1",
"value": "இப்போது நீங்கள் உங்கள் மேஜையில் இருந்து உணவை ஆர்டர் செய்யலாம்"
},
{
"key": "walkthrough_desc_2",
"value": "மாற்றத்தைப் பற்றி ஒருபோதும் கவலைப்பட வேண்டாம், ஆர்டர் செய்யும் போது சரியான தொகையை செலுத்துங்கள்"
},
{
"key": "walkthrough_desc_3",
"value": "வரிசையில் நிற்பதைத் தவிர்க்கவும், உங்கள் ஆர்டர் தயாராக இருக்கும்போது நாங்கள் அறிவிப்போம்"
},
{
"key": "choose_langauge_title",
"value": "மொழியை தேர்வு செய்யவும்"
},
{
"key": "my_cart",
"value": "என் வண்டி"
}
]
这是来自 API 的响应,采用 JSON 格式。我将响应转换为 xml 格式。如何将该 xml 文件保存为资源中的字符串 file.xml。是他们的任何方式来转换它。
提前致谢
解决方案
资源文件在构建时使用(单向/只读使用)。你误解了他们的目的。
您可以使用 GSON 等将 JSON 响应加载(反序列化)到 Java 对象中。
为反序列化准备 LanguageKey 类:
public class LanguageKey {
public final String key;
public final String value;
public LanguageKey(String key, String value) {
this.key = key;
this.value = value;
}
}
一个示例 MainActivity:
public class MainActivity extends AppCompatActivity {
private static final String JSON = "[" +
"{" +
"\"key\": \"welcome_screen_title\"," +
"\"value\": \"ZervBee\"" +
"}," +
"{" +
"\"key\": \"skip_button\"," +
"\"value\": \"தவிர்\"" +
"}" +
"]";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// deserialize using GSON
List<LanguageKey> languageKeys = new Gson().fromJson(
JSON, new TypeToken<List<LanguageKey>>(){}.getType()
);
// Now, you can use languageKeys object directly
for (LanguageKey languageKey: languageKeys) {
Log.d("LanguageKey", String.format(
"key: %s; value: %s",
languageKey.key, languageKey.value
));
}
}
}
注意:您的 JSON 无效。您可能需要"languageKeys":
在处理之前删除。
推荐阅读
- java - 更改 EditTextPreference 对话框输入文本颜色
- reactjs - 当下一个屏幕上的值发生变化时,在上一个屏幕上获取触发器
- nginx - Webpack-serve hmr 不适用于 websocket 的 nginx 代理
- r - 在 R 中:如何在给定观察之前为变量 A 中的组创建一个变量 C,该变量 C 具有来自变量 B 的最大值?
- wordpress - 该插件在激活期间生成了 198 个字符的意外输出。如果您注意到“标头已发送”消息,
- c# - Hangfire .NET Core - 获取排队的作业列表
- sed - 用 sed 替换逗号和换行符
- javascript - 是否可以将两个整数打包成十六进制并将它们取回
- google-app-engine - GCP App Engine 在使用中显示 5XX 错误,但未显示在 GAE 应用日志中
- java - 理解 Kafka 流 groupBy 和 window