C#中基于流的XML文件操作笔记
System.Xml.XmlReader和System.Xml.XmlWriters是两个抽象类,XmlReader提供了对于XML数据的快速,非缓存,只进模式的读取器,XmlWriter表示一个编写器,该编写器提供快速,非缓存,只进的方式来生成包含XML数据的流文件。 XmlReader与SAX读取器类似,不过前者是提取模式(只进只读的游标),后者是推送模式(将事件推送到应用程序)。 XmlReader的优点是: // ReadXml.cs // XmlReader示例 using System; using System.Xml; class Test { public static void Main(string[] args) { string path = @"G:资料C#面向对象编程C#面向对象编程CSharpChapter17books.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.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.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); } } } XMLWriter using System.Xml; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string path=@"C:UsersdellDesktoptest.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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |