【问题标题】:Android Parsing XML file get specific dataAndroid Parsing XML 文件获取特定数据
【发布时间】:2018-08-25 16:15:27
【问题描述】:

我有一个用 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>

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

        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文件的好方法吗?

【问题讨论】:

  • 您是想像文本文件一样读取它还是解析它?
  • 请调用 openRawResource 仅打开原始文件 R.raw.* (res/raw/*)。

标签: android xml kotlin


【解决方案1】:

您可能应该使用 XmlResourceParser documentation

你可以像这样在 res/xml 文件夹中获取它的 xml 实例:

val xmlResourceParser: XmlResourceParser = resources.getXml(R.xml.your_xml_file_name)

【讨论】:

    【解决方案2】:

    问题是您使用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)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      相关资源
      最近更新 更多