XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存,而在有些场景下我们必须考虑尽可能节省内存.这时候就该XmlReader和XmlWriter出场了。
XmlReader读取Xml需要通过Read()实例方法,不断读取Xml文档中的声明,节点开始,节点内容,节点结束,以及空白等等,直到文档结束,Read()方法返回false。
如下读取Xml内容实例代码和注释说明
复制代码 代码如下:
using System;
using System.Collections.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方法直到文档结束
while (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();
}
}
}
如果觉得代码不明白,下面是一张读取顺序图,标明了读取顺序号和每次读取的内容,如下图所示:
从图中可以看到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的结束标签
相关推荐:
seo网站关键字排名优化,网站seo关键词 ,运动ai
seo网赚什么意思,网站seo赚钱 ,ai打不开ai
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
AI助手Stut:智能时代的创新引擎,开启未来工作新篇章,ai对ai的格斗游戏
SEO详解:如何优化你的网站提升排名,获得更多流量,伊春湖南网站优化推广
为什么seo吸引人,为什么seo吸引人呢 ,ai路径查找器绘制树
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
AI免费写文章:让创作变得轻松高效
ChatGPT为什么页面下拉不了?问题解析与解决方案,ai对准
怎么用AI写出高质量科普文章?揭秘新时代创作利器!
ChatGPT360:全方位提升你的工作与生活效率,ai72787
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
AI上的文章属于原创吗?人工智能创作内容的归属问题
ChatGPT可以实现新闻报道的即时自动化生成,怎么更改ai2的图标
AI写作技巧,让创作事半功倍!
seo菲律宾是做什么,菲律宾网址排名 ,openl ai
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
为什么“360收录”是你网站推广的必备利器,seo亚马逊
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
ChatGPT破解:人工智能未来的无限可能,污污AI解说
用AI写文章:效率与创意的完美结合
“扩写AI”-引领写作革命,开启智能创作新时代,dede seo 标题如何填写
AI做文章:引领智能创作的未来
seo需要学会什么编程,seo要会些什么 ,剪映怎样加ai
文章AI排版,让创作更高效的秘密武器
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
seo网站排名优化哪家好,seo网站优化平台 ,ai斗蟋
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
ChatGPT打开后空白:如何解决这个困扰并高效使用AI助手,ai四声怎么写
AI免费生成:开启智能创作新纪元,助力你的创意无限可能
OpenAI无法验证支付方式?解决方案与常见问题解析,你好月光ai
SEO挣钱之道:如何通过SEO实现网络盈利,宁晋网站建设商家
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
交友群都有哪些,交友群是干什么的 ,ai猫csgo
seo高手有什么条件,seo难上手吗 ,指南ai写作电力创新
SEO走动:提升网站流量的关键一步,SEO数据监控宝宝推荐
文字生成AI开启创作的新纪元
在线AI写文:开启高效创作新时代
seo适用于什么领域,seo适用于什么领域中 ,ai智能翻译写作机器人v1.0
乘风SEO:突破困境,领航网络营销新时代,武汉靠谱的关键词排名
AI免费写作一键生成,效率与创意的完美结合
SOE优化:让你的网站轻松登顶,流量激增的秘密武器,广西网站建设存在问题
好用的AI写作软件免费推荐:创作新境界!
SEO要不,来看看如何通过SEO优化提高网站流量和曝光度,seo 获客技巧
SEO怎么做才能提升网站流量与排名?这篇文章给你全攻略,铁岭定制网站推广公司电话
SEO对策:提升网站排名与流量的必备策略,SEO入门相机平价学生
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
SEO优化如何为网站做好关键词研究和优化,ai直通