国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中基于流的XML文件操作筆記

2020-01-24 01:41:46
字體:
來源:轉載
供稿:網友

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 方法前,不會寫入元素和特性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲阳县| 芦溪县| 玉林市| 云南省| 望都县| 万载县| 云和县| 鸡泽县| 内黄县| 民勤县| 南阳市| 九龙城区| 长宁县| 含山县| 孝感市| 镇赉县| 额尔古纳市| 增城市| 荣成市| 嘉定区| 陇川县| 仲巴县| 古丈县| 寿宁县| 承德市| 勐海县| 三亚市| 宜兰市| 健康| 淄博市| 顺义区| 吉水县| 晋州市| 景宁| 汝南县| 岫岩| 嘉禾县| 滦南县| 华蓥市| 宁陵县| 咸丰县|