C#中基于流的XML文件操作笔记
System.Xml.XmlReader和System.Xml.XmlWriters是两个抽象类,XmlReader提供了对于XML数据的快速,非缓存,只进模式的读取器,XmlWriter表示一个编写器,该编写器提供快速,非缓存,只进的方式来生成包含XML数据的流文件。
XmlReader与SAX读取器类似,不过前者是提取模式(只进只读的游标),后者是推送模式(将事件推送到应用程序)。
XmlReader的优点是:
1. 简化状态管理
2.可以有多个输入流
3.提取模式可以作为推送模式的基础,反之不行。
4.提供一个可以将字符串直接写入缓冲区,避免多余字节的的复制。
5.有选择的处理XML流,可以预先设置处理XML流的方式。
下面的代码代码逻辑简单不会出现异常所以没有加入异常处理,只是作为测试使用。
// ReadXml.cs// XmlReader示例using System;using System.Xml;class Test{ public static void Main(string[] args) { string path = @"G:\资料\C#面向对象编程\C#面向对象编程\CSharp\Chapter17\books.xml"; XmlReader reader = null; try { // 创建XmlReaderSettings对象 XmlReaderSettings settings = new XmlReaderSettings(); // 设置XmlReaderSettings对象的属性 settings.ProhibitDtd = false; // 使用XmlReaderSettings对象来创建XmlReader对象 reader = XmlReader.Create(path, settings); ReadXml(reader); reader.Close(); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (reader != null) reader.Close(); } } private static void ReadXml(XmlReader reader) { try { // 解析文件,并显示每一个节点 while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: if (reader.IsEmptyElement) // 空元素? { Console.WriteLine("<{0}/>", reader.Name); } else { Console.Write("<{0}", reader.Name); if (reader.HasAttributes) // 属性? { while (reader.MoveToNextAttribute()) { Console.Write(" {0}=\"{1}\"", reader.Name, reader.Value); } } Console.WriteLine(">", reader.Name); } break; case XmlNodeType.Text: Console.WriteLine(reader.Value); break; case XmlNodeType.CDATA: Console.WriteLine("<![CDATA[{0}]]>", reader.Value); break; case XmlNodeType.ProcessingInstruction: Console.WriteLine("<?{0} {1}?>", reader.Name, reader.Value); break; case XmlNodeType.Comment: Console.WriteLine("<!--{0}-->", reader.Value); break; case XmlNodeType.XmlDeclaration: Console.WriteLine("<?xml version='1.0'?>"); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: Console.WriteLine("<!DOCTYPE {0} [{1}]>", reader.Name, reader.Value); break; case XmlNodeType.EntityReference: Console.WriteLine(reader.Name); break; case XmlNodeType.EndElement: Console.WriteLine("</{0}>", reader.Name); break; } } } catch (XmlException ex) { Console.WriteLine(ex.Message); } }} |
XmlWriters该编写器提供快速,非缓存,只进的方式来生成包含XML数据的流文件,优点基本和前者一样。
注意:使用 XmlReader,在调用 Close 方法前,不会读取元素和特性。
XMLWriterusing System.Xml;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { string path=@"C:\Users\dell\Desktop\test.xml"; XmlWriter writer=null; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars=(""); writer = XmlWriter.Create(path, settings); WriteXml(writer); writer.Close(); } private static void WriteXml(XmlWriter writer) { writer.WriteStartElement("books"); WriteChildNode(writer, "红楼梦", "曹雪芹", "25"); WriteChildNode(writer, "三国演义", "罗贯中", "20"); WriteChildNode(writer, "水浒传", "施耐庵", "18"); WriteChildNode(writer, "聊斋志异", "蒲松龄", "16"); writer.WriteEndElement(); } private static void WriteChildNode(XmlWriter writer, string title, string author, string price) { writer.WriteStartElement("book"); writer.WriteStartElement("title"); writer.WriteValue(title); writer.WriteEndElement(); writer.WriteStartElement("author"); writer.WriteValue(author); writer.WriteEndElement(); writer.WriteStartElement("price"); writer.WriteValue(price); writer.WriteEndElement(); writer.WriteEndElement(); } }} |
基本用法很简单,就是输出前后开关标签 ,主要使用这三个方法WriteStartElement() writer.WriteValue() WriteEndElement()
注意: XmlWriter 方法输出 XML 时,在调用 Close 方法前,不会写入元素和特性。
C#中基于流的XML文件操作笔记的更多相关文章
- 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!
我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- PHP操作XML文件学习笔记
原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...
- C# XML文件操作
C# XML文件操作 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-09 参考 LINQ to XML System.Xml ...
- VC 使用msxml6.dll动态链接库中的函数读写XML文件
VC 使用msxml6.dll动态链接库中的函数读写XML文件 目录 1 引言 2 .dll使用方法 3 常用函数总结 4 实例应用 5 运行效果预览 6 补充说明 7 不足之处 8 更新 引言: ...
- Spring 中基于 AOP 的 XML架构
Spring 中基于 AOP 的 XML架构 为了使用 aop 命名空间标签,你需要导入 spring-aop j架构,如下所述: <?xml version="1.0" e ...
- Spring中加载ApplicationContext.xml文件的方式
Spring中加载ApplicationContext.xml文件的方式 原文:http://blog.csdn.net/snowjlz/article/details/8158560 1.利用Cla ...
- C#程序中:如何删除xml文件中的节点、元素。
C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...
- selector是在文件夹drawable中进行定义的xml文件。
获取Drawable对象: Resources res = mContext.getResources(); Drawable myImage = res.getDrawable(R.drawable ...
随机推荐
- Django ORM之QuerySet
Django ORM用到三个类:Manager.QuerySet.Model.Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己 ...
- IO流(1)File类构造方法
构造方法: * File(String pathname):根据一个路径得到File对象 * File(String parent, String child):根据一个目录和一个子文件/目录得到Fi ...
- 把web项目部署到阿里云linux服务器上
最近弄了个试用阿里云服务器倒腾了半天终于部署好,分享一下. 1.登入阿里云打开你申请的是云服务器的实例: 点击重置密码---重置密码后重启服务器才能生效(一般需要重置密码.这里设置的密码是使用xhel ...
- linux平台mysql密码设破解
1.先停止mysql服务 service mysqld stop 2.启动mysql服务 并跳过权限认证 mysqld_safe --skip-grant-tables 3.打开另外一个终端 登录my ...
- 从MySQL开发规范处看创业
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...
- go-001-环境部署,IDEA插件
一.下载安装 https://golang.org/dl/ 下载之后安装即可 官网地址:https://golang.org/ 1.1.mac上安装go 1.安装Homebrew 安装命令: ruby ...
- 应用笔画宽度变换(SWT)来检测自然场景中的文本
Introduction: 应用背景:是盲人辅助系统,城市环境中的机器导航等计算机视觉系统应用的重要一步.获取文本能够为许多视觉任务提供上下文的线索,并且,图像检索算法的性能很大部分都依赖于对应的文本 ...
- ev3_basic——HITCON CTF 2018
[MISC] EN-US This challenge provides a jpg file and a pklg file. The jpg is shown a part of string o ...
- 正态分布及3Sigma原理
针对这个问题,用一两句话是难以说清楚的,这是数理统计学的内容,当质量特性呈正态分布时(实际上,当样本足够大时,二项分布.泊松分布等均趋近于正态分布),3Sigma水平代表了99.73%的合格率
- 软件包管理:rpm命令管理-查询
yum没有rpm查询的多. 使用包名时无所谓使用位置.因为查询是在后台数据库中查询的. 记忆是只需知道安装和升级时要加包全名,其余加包名.其实未安装的加包全名. rpm包可以手工指定安装路径,但不建议 ...