Android解析XML文件获取特定数据

时间:2018-08-25 16:15:28

标签: android xml kotlin

我有一个用Kotlin编写的android代码,用于从xml文件中获取xml数据

data.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <questions>

        <question>aaa</question>
        <question>bbb</question>
        <question>ccc</question>


    </questions>


</resources>

Kotlin代码将读取上面的xml文件:

        val _is = resources.openRawResource(+R.xml.data)
        val reader = BufferedReader(InputStreamReader(_is))
        val data = StringBuffer()
        var line = reader.readLine()
        while (line != null) {
            data.append(line!! + "\n")
            line = reader.readLine()
        }
        val resourceData = (data.toString())

我尝试打印resourceData的值,并且得到了

�������������l��������������������������4����������������������������������������������)������aaa��bbb��ccc��question��      questions��     resources�������������������$������������������������������������������������$������������������������������������������������$����������������������������������������������������������������������������������������������������������������������$��������������������������������������������������������������������������������������������������������������������$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������

我如何只能根据标签获取所需的数据? 是解析xml文件的好方法吗?

2 个答案:

答案 0 :(得分:0)

您可能应该使用XmlResourceParser documentation

您可以将XML的实例放置在res / xml文件夹中,如下所示:

return

答案 1 :(得分:0)

问题是您通过使用openRawResource()将xml文件像原始文件一样对待:

val _is = resources.openRawResource(+R.xml.data)

如果您只想读取文件的行(我对此表示怀疑),则应将其放在raw文件夹中并使用:

val _is = resources.openRawResource(R.raw.data)

但是如果您需要像xml一样解析它,请阅读以下内容:
https://developer.android.com/reference/android/content/res/XmlResourceParser
最后,如果只需要文件中的值,则可以在strings.xml内创建一个字符串数组,如下所示:

<string-array name="questions">
    <item>aaa</item>
    <item>bbb</item>
    <item>ccc</item>
</string-array>

并在您的活动中获取它:

val questions = resources.getStringArray(R.string.questions)

现在的问题是您需要的所有值的数组。