使用XmlReader读Xml
XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存和IO(可能是磁盘IO或者网络IO);而在有些场景下我们必须考虑尽可能节省内存和IO的开销,这时候就该
XmlReader和XMLWriter出场了
XmlReader读取Xml需要通过Read()实例方法,不断读取Xml文档中的声明,节点开始,节点内容,节点结束,以及空白等等,直到文档结束,Read()方法返回FALSE
如下读取Xml内容实例代码和注释说明
using System; using System.Collection.Generic; using System.Text; using System.Xml; using System.IO; namespace UseXmlReader {class Program{static void Main(string[] args){//声明StringReader传入Xml文本,作为XMLReader.Create的参数using(StringReader strRdr=new StringReader(@"<?xml version=""1.0"" encoding=""utf-8""?><root><cat color=""white"">I'm a Cat</cat><dog color=""yellow""/> </root>")){//通过XMLReader.Create静态方法创建XMLReader实例using (XmlReader rdr=XmlReader.Create(strRdr)){//循环Read方法直到文档结束 white(rdr.Read()){Console.WriteLine("rdr.NodeType="+rdr.NodeType);//如果是开始节点if(rdr.NodeType==XmlNodeType.Element){//通过rdr.Name得到节点名string elementName=rdr.Name;Console.WriteLine(elementName+"element start");if(elementName=="root"){}//读取到cat元素 这时rdr.Read()读取到的内容为<cat color="white">else if(elementName="cat"){//可以通过中括号获得属性值string colorVal=rdr["color"];Console.WriteLine("\tcat's color is" +colorVal);//读取到节点内文本内容if(rdr.Read()){//通过rdr.Value获得文本内容Console.WriteLine("\t cat said:" +rdr.Value); } } }else if(rdr.NodeType==XmlNodeType.EndElement){//在节点结束时也可以通过rdr.Name获得节点名字string elementName=rdr.Name;Console.WriteLine(elementName +"element end"); } } } }Console.Read(); } } }
如果觉得代码不明白,下面是一张读取顺序图,标明了读取顺序号和每次读取的内容,如下图所示:
感谢@Kingthy对文中消耗IO说法提出问题,XmlReader和XmlDocument消耗的IO是一样的;不同的是XmlReader可以读取一点,显示一点,而XmlDocument必须完全读入之后才可以开始处理。
转载于:https://www.cnblogs.com/zzp0320/p/8287297.html
使用XmlReader读Xml相关推荐
- php xmlreader 读xml,PHP中使用xmlreader读取xml数据示例
这篇文章主要介绍了PHP中使用xmlreader读取xml数据示例,本文示例相对简单,只包含了一个读取功能,需要的朋友可以参考下 有一个XML文件,,内容如下: 复制代码 代码如下: Simpsons ...
- 02_Android写xml文件和读xml文件
新建Android项目 编写AndroidManifest.xml,使本Android项目具有单元测试功能和写外设的权限. <?xml version="1.0" en ...
- java读XML到实体bean中
需求: java读XML文档到一个实体bean中 给定一个XML文档,将所有的节点,封装到一个实体中,然后,传XML文件名到程序,将该文件的内容读到实体bean中,返回实体. xml文档的内容 < ...
- flash读xml实例教程
flash读取xml是flash编程必学的一课,在以后的flash编程生涯中会经常遇到的. 其实flash读xml很简单的. 下面用as2简易描述下: 一.建立XML对象: var myXML = n ...
- WinRT知识积累1之读xml数据
前述:这个知识是在Windows8.1或WP8.1中运用Linq to xml获取一个xml文件里的数据.(网上也很多类似的知识,可以借鉴参考) 平台:windows8.1 metro 或者WP8.1 ...
- Qt: QXMLStreamReader,读XML文件实例
主要接口: 1.TokenType QXmlStreamReader::readNext() 功能:读取下一个标记,并返回其类型. 主要的类型有: enum QXmlStreamReader::Tok ...
- Android getDimensionPixelSize, 代码中设置字体大小,读xml配置。
//给一个id为name的TextView设置字体大小 TextView mName = (TextView)findViewById(R.id.name); mName.setTextSize( ...
- TinyXML-2 读 XML 文件
要读的XML文件 示例代码 #include <iostream> #include "tinyxml2.h"using namespace std; using na ...
- 使用tinyxml读xml文件信息到结构体
下载TinyXML的网址:http://www.grinninglizard.com/tinyxml/ 使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是:tinyxm ...
最新文章
- 【Qt】错误GL/gl.h: No such file or directory的解决方法(以及cannot find -lGL解决方法)
- 深入java虚拟机 第四版_深入理解Java虚拟机-常用vm参数分析
- 【Python】字符转换为 ASCII 码
- python tkinter 循环显示文本_Python简易音乐播放器
- Fast CGI 工作原理
- 08.self关键字
- java 中 if与while的区别
- mysql常用操作记录
- TreeView 之间节点拖动 /移动
- Mac出现启动问题怎么办
- ZOJ 3432 Find the Lost Sock (水题)
- DSP指纹识别系统硬件设计
- Python爬虫入门教程 89-100 定个小目标,先用Python爬个一亿B站用户
- 客户关系管理 数据库设计案例
- Simple Contrastive Representation Adversarial Learning for NLP Tasks
- 双十一|又快又稳!闲鱼实时事件规则计算驱动平台
- Java 常用工具类
- 2021京东校招实习生面试 一面
- 【Java】高并发-JUC:JUC中的Condition对象
- 人人网相册漏洞:非好友可查看隐私相册
热门文章
- c语言怎么编程dll,【C语言】编写的DLL注入工具
- 【Nginx】浏览器请求URL遇到错误:no-referrer-when-downgrade
- 安装虚拟机和docker封装
- python函数的传参要求_python中函数传参详解
- python qcut_Python之Pandas库学习(三):数据处理
- mysql 默认密码_mysql数据库安装
- linux 交叉编译 nginx,交叉编译nginx,luajit
- linux脚本后台,后台实时分流文件的shell脚本
- 怎么在pycharm打开浏览器_Mac OS下搭建 python3+pycharm+selenium+Chrome环境
- 中北大学c语言程序设计作业答案,C语言程序设计