如何读取strings.xml作为文件?

时间:2017-08-02 11:31:41

标签: java android

我试图访问strings.XML,但我无法找到它的路径。 我需要在Values文件夹中读取strings.XML作为文件并访问that.how的内容我可以访问该文件及其路径是什么?

修改

之前我用过这个:

 Field[] fields = R.string.class.getDeclaredFields(); // or Field[] fields = R.string.class.getFields();
    String str = "";
    for (int  i =0; i < fields.length; i++) {
        int resId = ctx.getResources().getIdentifier(fields[i].getName(), "string", ctx.getPackageName());
        str += fields[i].getName() + " = ";
        if (resId != 0) {
            str += ctx.getResources().getString(resId);
        }
        str += "\n";
    }

但是返回所有库的所有字符串,但我只需要在我的模块的strings.xml中使用字符串。

我编写Gradle代码,我想要一些像这样的东西,但在java中:

 def stringsFile = file("src/main/res/values/strings.xml")
def parsedProjectXml = (new XmlParser()).parse(stringsFile)

4 个答案:

答案 0 :(得分:2)

  

我试图访问strings.xml但我找不到它的路径。

没有路径,因为它不是设备上的文件。

  

如何访问该文件

你做不到。 可能能够通过getXml()对象上的Resources获取解析器,但我还没有尝试过这个字符串资源文件。

  

它的道路是什么?

它没有。

答案 1 :(得分:1)

您无法从路径中读取它。您可以按如下方式定义字符串数组:

XML中的

   <string-array name="arrayName">
    <item>@string/String1</item>
    <item>@string/String2</item>
    <item>@string/String3</item>
    <item>@string/String4</item>
    <item>@string/String5</item>

</string-array>

在java中:

您可以按如下方式检索数据:

       String[] stringsArray= getResources().getStringArray(R.array.arrayName);

        for (int i = 0; i < stringsArray.length; i++)
        {

        }   

答案 2 :(得分:0)

您无法将strings.xml作为.xml文件访问,只需阅读即可。构建android应用程序后,资源文件中的值在R.java文件中得到引用。所以你必须使用android内部API访问它。 下面是一个示例R.java文件。

public final class R {  
    public static final class attr {  
    }  
    public static final class drawable {  
        public static final int ic_launcher=0x7f020000;  
    }  
    public static final class id {  
        public static final int menu_settings=0x7f070000;  
    }  
    public static final class layout {  
        public static final int activity_main=0x7f030000;  
    }  
    public static final class menu {  
        public static final int activity_main=0x7f060000;  
    }  
    public static final class string {  
        public static final int app_name=0x7f040000;  
        public static final int hello_world=0x7f040001;  
        public static final int menu_settings=0x7f040002;  
    }  
    public static final class style {  

        public static final int AppBaseTheme=0x7f050000;  



        public static final int AppTheme=0x7f050001;  
    }  
}

答案 3 :(得分:0)

最后,我找到了解决方案 使用Gradle函数和正确的构建时刻将strings.XML的副本复制到原始文件夹中,然后解析该文件。