使用XmlReader读Xml

来源:互联网 发布:跳跃网络签到不能用 编辑:程序博客网 时间:2024/06/07 22:18
XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存;而在有些场景下我们必须考虑尽可能节省内存,这时候就该XmlReader和XmlWriter出场了。XmlReader读取Xml需要通过Read()实例方法,不断读取Xml文档中的声明,节点开始,节点内容,节点结束,以及空白等等,直到文档结束,Read()方法返回false。如下读取Xml内容实例代码和注释说明如果觉得代码不明白,下面是一张读取顺序图,标明了读取顺序号和每次读取的内容,如下图所示:

从图中可以看到XmlReader在读取这段Xml时:
第1次Read()读取的是Xml文档声明部分
第2次Read()读取的是声明后的空白
第3次Read()读取的是根节点root的开始标签
第4次Read()读取的是根节点开始后的空白
第5次Read()读取的是cat节点的开始部分,从左尖括号到右尖括号包括该节点的属性
第6次读取的是cat节点的内容
第7次读取的是cat节点的结束标签
第8次读取的是cat节点结束标签后的空白
第9次读取的是dog节点的开始部分,注意是从左尖括号开始到结束斜杠之前
第10次读取的是dog标签的结束/>
第11次读取的是dog标签结束后的空白
第12次读取的是root的结束标签

感谢@Kingthy对文中消耗IO说法提出问题,XmlReader和XmlDocument消耗的IO是一样的;不同的是XmlReader可以读取一点,显示一点,而XmlDocument必须完全读入之后才可以开始处理。

0 0
原创粉丝点击