乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      XML與C#完全版

       素行 2007-01-19
      XML與C#完全版
      2007年01月04日 星期四 14:46
      擴(kuò)展標(biāo)記語(yǔ)言XML(eXtensible Markup Language),是由W3C組織制定的。做為用于替代HTML語(yǔ)言的一種新型的標(biāo)記語(yǔ)言,XML內(nèi)部有著很多基本標(biāo)準(zhǔn),XML就是通過(guò)與這些相關(guān)標(biāo)準(zhǔn)地結(jié)合,應(yīng)用于科學(xué)計(jì)算、電子出版、多媒體制作和電子商務(wù)的。C#作為一種新型的程序語(yǔ)言,是.Net框架的一個(gè)重要組成部分,他和XML的關(guān)系頗深。本文就從一個(gè)方面來(lái)探討一下這二者的關(guān)系。即:看用C#如何來(lái)創(chuàng)建和讀取XML文檔。 

      一. 本文程序設(shè)計(jì)和運(yùn)行的軟件環(huán)境: 

      (一).微軟公司視窗2000服務(wù)器版 

      (二)..Net FrameWork SDK Beta 2 

      二. C#創(chuàng)建XML文檔: 

      在本文中我們來(lái)介紹一下用C#創(chuàng)建XML文檔的二種方法,這二種方法各有千秋,第一種創(chuàng)建起來(lái)更靈活,第二種創(chuàng)建起來(lái)更方便。 

      (一).C#創(chuàng)建XML文檔的第一種方法: 

      這一種方法是按照按照XML的結(jié)構(gòu)一步一步的構(gòu)建XML文檔。C#構(gòu)建XML文檔通過(guò).Net FrameWork SDK中的命名空間"System.Xml"中封裝的各種類來(lái)實(shí)現(xiàn)的。下面就按照一個(gè)XML典型文檔結(jié)構(gòu)來(lái)介紹一下。 

      (1).首先要?jiǎng)?chuàng)建一個(gè)空的XML文檔: 

      在命名空間"System.Xml"中有一個(gè)類"XmlDocument",C#通過(guò)這個(gè)類來(lái)描述XML文檔。下面是用C#創(chuàng)建一個(gè)XML文檔。 

      xmldoc = new System.Xml.XmlDocument ( ) ;  


      (2).在XML的文檔的最頭部加入XML的聲明段落: 

      利用"XmlDocument"類中的 "CreateNode" 方法可以創(chuàng)建一個(gè)指定類型的XML節(jié)點(diǎn),"CreateNode" 方法的調(diào)用方法總共有三種,在本文中使用的其一般的方法,具體語(yǔ)法如下: 

      XmlDocument.CreateNode Method ( XmlNodeType , String , String ) 

      然后在利用"XmlDocument"類中的"AppendChild"方法在XML文檔中加入此節(jié)點(diǎn),用C#在XML文檔中加入聲明段落實(shí)現(xiàn)的語(yǔ)句如下: 

      xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
      xmldoc.AppendChild ( xmlnode ) ;
       


      (3).為XML文檔加入元素(element): 

      加入數(shù)據(jù)內(nèi)容是通過(guò)元素,在"XmlDocument"類中提供了二個(gè)方法:"CreateElement"和"CreateTextNode"。其中第一個(gè)方法是在XML中創(chuàng)建一個(gè)元素,另外一個(gè)方法是為創(chuàng)建的元素指定文本值。下面是為上面創(chuàng)建的XML文檔加入一個(gè)根元素。 

      xmlelem = xmldoc.CreateElement ( "" , "ROOT" , "" ) ;
      xmltext = xmldoc.CreateTextNode ( "Root Text" ) ;
       
      注釋:其中"xmlelem"是創(chuàng)建的"XmlElement"對(duì)象,"xmltext"是"XmlText"對(duì)象 

      有了創(chuàng)建一個(gè)XML元素的例子,就可以根據(jù)XML文檔中數(shù)據(jù)的不同的結(jié)構(gòu)來(lái)創(chuàng)建其他的數(shù)據(jù)了。 

      (二).C#創(chuàng)建XML文檔的第一種方法的源程序代碼(NO1.cs): 

      using System ;
        using System.Xml ;
         class MainClass
         {
          XmlDocument xmldoc ;
          XmlNode xmlnode ;
          XmlElement xmlelem ;
          XmlElement xmlelem2 ;
          XmlText xmltext ;
          static void Main ( string [ ] args )
          {
           MainClass app = new MainClass ( ) ;
          }
          public MainClass ( )
          {
           xmldoc = new XmlDocument ( ) ;
           //加入XML的聲明段落
           xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
           xmldoc.AppendChild ( xmlnode ) ;
           //加入一個(gè)根元素
           xmlelem = xmldoc.CreateElement ( "" , "ROOT" , "" ) ;
           xmltext = xmldoc.CreateTextNode ( "Root Text" ) ;
           xmlelem.AppendChild ( xmltext ) ;
           xmldoc.AppendChild ( xmlelem ) ;
           //加入另外一個(gè)元素
           xmlelem2 = xmldoc.CreateElement ("SampleElement" ) ;
           xmlelem2 = xmldoc.CreateElement ( "" , "SampleElement" , "" ) ;
           xmltext = xmldoc.CreateTextNode ( "The text of the sample element" ) ;
           xmlelem2.AppendChild ( xmltext ) ;
           xmldoc.ChildNodes.Item(1).AppendChild ( xmlelem2 ) ;
           //保存創(chuàng)建好的XML文檔
           try
           {
            xmldoc.Save ( "c:\\data.xml" ) ; 
         }
         catch ( Exception e )
           {
            //顯示錯(cuò)誤信息
            Console.WriteLine ( e.Message ) ;
           }
           Console.ReadLine ( ) ;
          }
         }  


      (三).C#創(chuàng)建XML文檔的第二種方法: 

      在介紹完第一種方法以后,我想每一個(gè)讀者都感覺到用C#創(chuàng)建XML文檔是一項(xiàng)比較煩雜的工作了,因?yàn)椴粌H要了解創(chuàng)建的知識(shí),還要了解文檔的結(jié)構(gòu),這樣創(chuàng)建的過(guò)程就是一步一步的了。下面就來(lái)介紹一種比較容易的創(chuàng)建方法,這種創(chuàng)建方法是直接定義XML文檔,然后把他保存到文件中就可以了。 

      (1).創(chuàng)建一個(gè)XML文檔: 

      這一點(diǎn)和第一種方法一樣,在這里就不介紹了。 

      (2).通過(guò)"XmlDocument"類中的"LoadXml"方法,直接在文檔中加入想要加入的XML數(shù)據(jù)。當(dāng)然你加入的XML應(yīng)該符合XML的語(yǔ)法,不然產(chǎn)生的文件也沒有什么意義了。下面是加入XML的具體代碼: 

          doc.LoadXml ( 
              "<Employees> " +
                        "<NO1>" +
                        "<Name>Ma Jin Hu</Name>" +
                        "<ZIP> 239000 </ZIP>" +
                        "<Address>Feng Huang Street</Address>" +
                        "<City>Chu Zhou City</City>" +
                        "<State> ANHUI </State>" +
                        "</NO1>" +
                        "<NO2>" +
                        "<Name>Wang Tian</Name>" +
                        "<ZIP> 239000 </ZIP>" +
                        "<Address>Lang Ya Street</Address>" +
                        "<City>He Fei City</City>" +
                        "<State> ANHUI </State>" +
                        "</NO2>" +
                        "<NO3>" +
                        "<Name>Zou Wen Biao</Name>" +
                        "<ZIP> 100000 </ZIP>" +
                        "<Address>Sai Di Street</Address>" +
                        "<City>Bei Jin City</City>" +
                        "<State>Bei Jin</State>" +
                        "</NO3>" +
                        "</Employees>" ) ;     


      (3).把保存XML文檔到文件中: 

      保存XML文檔是通過(guò)"XmlDocument"類中的"Save"方法來(lái)實(shí)現(xiàn)的。具體如下: 

      doc.Save ( "data.xml" ) ;  


      (四).C#創(chuàng)建XML文檔的第二種方法的源程序代碼(NO2.cs): 

      using System ;
        using System.IO ;
        using System.Xml;
        public class Sample
        {
          public static void Main ( )
          {
            //創(chuàng)建一個(gè)XmlDocument對(duì)象
            XmlDocument doc = new XmlDocument ( ) ;
            doc.LoadXml ( 
      "<Employees> " +
                        "<NO1>" +
                        "<Name>Ma Jin Hu</Name>" +
                        "<ZIP> 239000 </ZIP>" +
                        "<Address>Feng Huang Street</Address>" +
                        "<City>Chu Zhou City</City>" +
                        "<State> ANHUI </State>" +
                        "</NO1>" +
                        "<NO2>" +
                        "<Name>Wang Tian</Name>" +
                        "<ZIP> 239000 </ZIP>" +
                        "<Address>Lang Ya Street</Address>" +
                        "<City>He Fei City</City>" +
                        "<State> ANHUI </State>" +
                        "</NO2>" +
                        "<NO3>" +
                        "<Name>Zou Wen Biao</Name>" +
                        "<ZIP> 100000 </ZIP>" +
                        "<Address>Sai Di Street</Address>" +
                        "<City>Bei Jin City</City>" +
                        "<State>Bei Jin</State>" +
                        "</NO3>" +
                        "</Employees>" ) ;
            //保存這個(gè)文檔到文件中
            doc.Save ( "data.xml" ) ;
          }
        }    


      用C#創(chuàng)建XML文檔的方法其實(shí)有很多,在這里只是選取了二種比較典型的方法加以介紹。但無(wú)論那一種方法,C#在創(chuàng)建XML的時(shí)候都需要用到.Net FrameWork SDK。所以了解并掌握這個(gè)類庫(kù)中的內(nèi)容對(duì)于C#編程是十分必要的,在下面我們將來(lái)介紹一下用C#讀取XML中的數(shù)據(jù),通過(guò)這你會(huì)發(fā)現(xiàn),C#又是利用這個(gè)類庫(kù)實(shí)現(xiàn)這個(gè)功能的。 

      三.C#讀取XML文件: 

      本節(jié)將用C#來(lái)讀取本文中用第二種方法創(chuàng)建的XML文件,編譯NO2.cs后,執(zhí)行將產(chǎn)生"data.xml"文件,其中"data.xml"文件的數(shù)據(jù)結(jié)構(gòu)如下: 

      <Employees>
        <NO1>
          <Name>Ma Jin Hu</Name>
            <ZIP> 239000 </ZIP>
            <Address>Feng Huang Street</Address>
            <City>Chu Zhou City</City>
            <State> ANHUI </State>
          </NO1>
          <NO2>
            <Name>Wang Tian</Name>
            <ZIP> 239000 </ZIP>
            <Address>Lang Ya Street</Address>
            <City>He Fei City</City>
            <State> ANHUI </State>
          </NO2>
          <NO3>
            <Name>Zou Wen Biao</Name>
            <ZIP> 100000 </ZIP>
            <Address>Sai Di Street</Address>
            <City>Bei Jin City</City>
            <State>Bei Jin</State>
          </NO3>
        </Employees>  


      在下面的內(nèi)容中,我們利用C#讀取此文件,并用ListView組件按照數(shù)據(jù)結(jié)構(gòu)給顯示出來(lái)。下圖是讀取此XML后的運(yùn)行界面: 

      圖01:C#讀取XML后的運(yùn)行界面 

      按此在新窗口打開圖片
      要正確讀取XML數(shù)據(jù),首先要了解XML的結(jié)構(gòu)。根據(jù)上面的XML文件,可以知道此XML包含三個(gè)數(shù)據(jù),下面就來(lái)看如何讀取這三條數(shù)據(jù): 

      (1).裝入XML文件,形成數(shù)據(jù)流: 

      通過(guò)創(chuàng)建一個(gè)"XmlDocument"對(duì)象,然后利用"load"方法,可以把XML文件裝入,具體如下: 

      XmlDocument doc = new XmlDocument ( ) ;
        // 裝入指定的XML文檔
        doc.Load ( "C:\\data.xml" ) ;  
      (2).讀取XML文件,并顯示出來(lái): 

      讀取XML是通過(guò)創(chuàng)建"XmlNodeReader"對(duì)象來(lái)實(shí)現(xiàn)的,"XmlNodeReader"對(duì)象主要是用來(lái)可以讀取XML的節(jié)點(diǎn)數(shù)據(jù)。在本文的程序中使用到了一些"XmlNodeReader"的屬性,譬如"NodeType"屬性,用來(lái)判斷讀取得節(jié)點(diǎn)是什么類型。"Value"是節(jié)點(diǎn)的值。下面是讀取XML文件并顯示在ListView中的實(shí)現(xiàn)代碼,其中l(wèi)istview1是已經(jīng)創(chuàng)建ListView組件: 

      while ( reader.Read ( ) ) 
      {
      //判斷當(dāng)前讀取得節(jié)點(diǎn)類型
      switch ( reader.NodeType )
        {
        case XmlNodeType.Element :
        s = reader.Name ;
        break ;
        case XmlNodeType.Text :
        if ( s.Equals ( "Name" ) )
        myItem = Listview1.Items.Add ( reader.Value ) ;
        else
        myItem.SubItems.Add ( reader.Value ) ;
        break ;
        } 
      }  


      四.C#讀取XML的文件的源程序代碼(read.cs): 

      在了解了上面的內(nèi)容以后,可以得到用C#讀取指定XML文件的完整代碼,具體如下: 

            using System ;
        using System.Drawing ;
        using System.Collections ;
        using System.ComponentModel ;
        using System.Windows.Forms ;
        using System.Data ;
        using System.Xml ;
          public class Form1 : Form
        {
        private Button button1 ;
        private ListView Listview1 ;
        private System.ComponentModel.Container components = null ;
        
        public Form1 ( )
        {
        //初始化窗體中的各個(gè)組件
        InitializeComponent ( ) ;
        }
        //清除程序中使用過(guò)的資源
        protected override void Dispose ( bool disposing )
        {
        if ( disposing )
        {
        if ( components != null ) 
      {
      components.Dispose ( ) ;
        }
        }
        base.Dispose ( disposing ) ;
        }
        private void InitializeComponent ( )
        {
        button1 = new Button ( ) ;
        Listview1 = new ListView ( ) ;
        SuspendLayout ( ) ;
        
        button1.Anchor = ( ( AnchorStyles.Bottom | AnchorStyles.Left ) 
      | AnchorStyles.Right ) ;
        button1.Location = new Point ( 240 , 296 ) ;
        button1.Name = "button1" ;
        button1.Size = new Size ( 112 , 37 ) ;
        button1.TabIndex = 0 ;
        button1.Text = "讀取XML文檔" ;
        button1.Click += new System.EventHandler ( button1_Click ) ;
        
        Listview1.Anchor = ( ( ( AnchorStyles.Top | AnchorStyles.Bottom ) 
      | AnchorStyles.Left ) 
      | AnchorStyles.Right ) ;
        Listview1.GridLines = true ;
        Listview1.Location = new Point ( 10 , 9 ) ;
        Listview1.Name = "Listview1" ;
        Listview1.Size = new Size ( 623 , 269 ) ;
        Listview1.TabIndex = 1 ;
        Listview1.View = View.Details ;
        
        this.AutoScaleBaseSize = new Size ( 6 , 14 ) ;
        this.ClientSize = new Size ( 608 , 348 ) ;
        this.Controls.Add ( Listview1 );
        this.Controls.Add ( button1 );
        this.Name = "Form1" ;
        this.StartPosition = FormStartPosition.CenterScreen ;
        this.Text = "用C#來(lái)讀取XML文檔" ;
        this.ResumeLayout ( false ) ;
        
        }
        static void Main ( ) 
      {
      Application.Run ( new Form1 ( ) ) ;
        }
        
        private void button1_Click ( object sender , System.EventArgs e )
        {
        ListViewItem myItem = new ListViewItem ( ) ;
        // 構(gòu)建listview組件
        Listview1.Columns.Clear ( ) ; 
      Listview1.Items.Clear ( ) ;
        Listview1.Columns.Add ( "Name" , 80 , HorizontalAlignment.Left ) ; 
      Listview1.Columns.Add ( "Zip" , 80 , HorizontalAlignment.Left ) ; 
      Listview1.Columns.Add ( "Address" , 80 , HorizontalAlignment.Left ) ; 
      Listview1.Columns.Add ( "City" , 80 , HorizontalAlignment.Left ) ; 
      Listview1.Columns.Add ( "State" , 80 , HorizontalAlignment.Left ) ; 
      XmlNodeReader reader = null ;
        
        try
        {
        string s = "" ;
        XmlDocument doc = new XmlDocument ( ) ;
        // 裝入指定的XML文檔
        doc.Load ( "C:\\data.xml" ) ;
        // 設(shè)定XmlNodeReader對(duì)象來(lái)打開XML文件
        reader = new XmlNodeReader ( doc ) ;
        // 讀取XML文件中的數(shù)據(jù),并顯示出來(lái)
        while ( reader.Read ( ) ) 
      {
      //判斷當(dāng)前讀取得節(jié)點(diǎn)類型
      switch ( reader.NodeType )
        {
        case XmlNodeType.Element :
        s = reader.Name ;
        break ;
        case XmlNodeType.Text :
        if ( s.Equals ( "Name" ) )
        myItem = Listview1.Items.Add ( reader.Value ) ;
        else
        myItem.SubItems.Add ( reader.Value ) ;
        break ;
        } 
      }
      }
      finally
      {
      //清除打開的數(shù)據(jù)流
      if ( reader != null )
        reader.Close ( ) ;
        }
        }
        }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多