当前位置:编程学习 > XML/UML >>

基于流的XML文件操作笔记

System.Xml.XmlReader和System.Xml.XmlWriters是两个抽象类,XmlReader提供了对于XML数据的快速,非缓存,只进模式的读取器,XmlWriter表示一个编写器,该编写器提供快速,非缓存,只进的方式来生成包含XML数据的流文件。
XmlReader与SAX读取器类似,不过前者是提取模式(只进只读的游标),后者是推送模式(将事件推送到应用程序)。
XmlReader的优点是:
1. 简化状态管理
2.可以有多个输入流
3.提取模式可以作为推送模式的基础,反之不行。
4.提供一个可以将字符串直接写入缓冲区,避免多余字节的的复制。
5.有选择的处理XML流,可以预先设置处理XML流的方式。
 下面的代码代码逻辑简单不会出现异常所以没有加入异常处理,只是作为测试使用。
  xmlreader 
 1 // ReadXml.cs
 2 // XmlReader示例
 3
 4 using System;
 5 using System.Xml;
 6
 7 class Test
 8 {
 9     public static void Main(string[] args)
10     {
11         string path = @"G:\资料\C#面向对象编程\C#面向对象编程\CSharp\Chapter17\books.xml";
12         XmlReader reader = null;
13         try
14         {
15             // 创建XmlReaderSettings对象
16             XmlReaderSettings settings = new XmlReaderSettings();
17             // 设置XmlReaderSettings对象的属性 www.zzzyk.com
18             settings.ProhibitDtd = false;
19             // 使用XmlReaderSettings对象来创建XmlReader对象
20             reader = XmlReader.Create(path, settings);
21             ReadXml(reader);
22             reader.Close();
23             Console.ReadKey();
24         }
25         catch (Exception ex)
26         {
27             Console.WriteLine(ex.Message);
28         }
29         finally
30         {
31             if (reader != null)
32                 reader.Close();
33         }
34     }
35
36     private static void ReadXml(XmlReader reader)
37     {
38         try
39         {
40             // 解析文件,并显示每一个节点
41             while (reader.Read())
42             {
43                 switch (reader.NodeType)
44                 {
45                     case XmlNodeType.Element:
46                         if (reader.IsEmptyElement)  // 空元素?
47                         {
48                             Console.WriteLine("<{0}/>", reader.Name);
49                         }
50                         else
51                         {
52                             Console.Write("<{0}", reader.Name);
53                             if (reader.HasAttributes)   // 属性?
54                             {
55                                 while (reader.MoveToNextAttribute())
56                                 {
57                                     Console.Write(" {0}=\"{1}\"", reader.Name, reader.Value);
58                                 }
59                             }
60                             Console.WriteLine(">", reader.Name);
61                         }
62                         break;
63                     case XmlNodeType.Text:
64                         Console.WriteLine(reader.Value);
65                         break;
66    

补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,