我有一个用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文件的好方法吗?
答案 0 :(得分:0)
答案 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)
现在的问题是您需要的所有值的数组。