程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中基於流的XML文件操作筆記

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

編輯:C#入門知識

C#中基於流的XML文件操作筆記。本站提示廣大學習愛好者:(C#中基於流的XML文件操作筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是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 辦法前,不會讀取元素和特征。

XMLWriter
using 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 辦法前,不會寫入元素和特征。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved