xml文件在各种开发中都广泛应用。Android中也不例外。作为承载数据的一个重要角色,如何读写xml成为一项十分重要的技能。
在Android中,常见的xml解析器分为DOM解析器,SAX解析器,PULL解析器。
将该xml文件放置在assets目录中。
<?xml version="1.0" encoding="utf-8"?>
<persons>
<person id="1">
<name>zhangsan</name>
<age>21</age>
</person>
<person id="2">
<name>lisi</name>
<age>22</age>
</person>
<person id="3">
<name>wangwu</name>
<age>23</age>
</person>
</persons>
实体类
data class Person(val id: Int, val name: String, val age: Int)
DOM 解析器
DOM是基于树形结构的节点和信息片段的集合,允许开发人员使用DOM API遍历xml树,检索所需结构。分析该结构通常需要加载整个文档和构造整个树形结构,然后才可检索和更新节点信息。
在DOM解析过程中,会先把整个xml读入内存中,然后构建一个驻留内存的树结构,这样就可以通过代码使用DOM接口来操作整个树结构。由于DOM在内存中以树形结构存放,因此,检索和更新的效率会更高。但是对于特别大的文档,解析和加载会消耗比较大的资源,如果xml文件比较小,使用DOM也是可行的。
DOM解析的步骤
1.首先利用DocumentBuilderFactory 创建一个DocumentBuilderFactory实例
2.利用DocumentBuilderFactory 创建一个DocumentBuilder实例
3.加载整个xml文档(Document)
4.获取文档的根节点(Element)
5.获取根节点中所有子节点列表(NodeList)
6.然后获取子节点列表中的需要读取的节点
private fun dom(context: Context, fileName: String): ArrayList<Person> {
val persons = ArrayList<Person>()
var inputStream: InputS