首页 > 解决方案 > 是否可以在 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。是他们的任何方式来转换它。

提前致谢

标签: androidxmlstringandroid-resourcesjsonresponse

解决方案


资源文件在构建时使用(单向/只读使用)。你误解了他们的目的。

您可以使用 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": 在处理之前删除。


推荐阅读