我正在尝试从项目中的资源中读取不同的xml文件,并且搜索了一会儿之后,我发现 A B C
0 1 1 2.0 # mean of 1.0 and 3.0
1 2 1 1.0
2 3 1 3.0
3 4 1 5.0
4 1 2 6.0
5 2 2 2.0
6 3 2 4.0 # mean of 6.0 and 2.0
7 4 2 6.0 # mean of 6.0 and NaN
似乎可以正常工作。但是,当我尝试执行此操作时,输出只是一堆
��������������@�������������������。
我不是专家,但我想它与UTF-8有关,但我根本找不到答案。
getResource().readText()
(我尝试过使用和不使用“ Charsets.UTF_8” )
我尝试读取的xml文件:
val fileContent =
this::class.java.getResource("/res/xml/test.xml").readText(Charsets.UTF_8)
答案 0 :(得分:0)
您尝试过的Class#getResource(String)
方法通常不在Android开发中使用。规范做法是使用从Resources
实例获得的Context
类的实例。您可以阅读developer resources guide了解更多信息。
查看this answer,了解我认为最简单的方法可以满足您的需求。
建议将XML文件存储在/res/raw
目录下,并在运行时通过Resources#openRawResource(int)
访问它。该方法返回一个输入流,您可以阅读该输入流,但是最适合您。一些XML解析库可能会直接接受输入流。您还可以像这样将流读取为字符串,
import android.content.res.Resources
import androidx.annotation.RawRes
fun readXmlResourceAsString(resources: Resources, @RawRes xmlResId: Int): String =
resources.openRawResource(xmlResId).use { resourceStream ->
String(resourceStream.readBytes(), Charsets.UTF_8)
}
我还将提到一种听起来更适合您的需求的方法,即Resources#getXml(Int)
。但是,它返回android.content.res.XmlResourceParser
的实例,该实例的解析能力非常有限。我强烈怀疑您会发现使用此类来实现您打算对XML进行的操作会不必要地困难。