麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > XML > 正文

C#來創建和讀取XML文檔

2024-09-05 20:55:44
字體:
來源:轉載
供稿:網友
擴展標記語言xml(extensible markup language),是由w3c組織制定的。做為用于替代html語言的一種新型的標記語言,xml內部有著很多基本標準,xml就是通過與這些相關標準地結合,應用于科學計算、電子出版、多媒體制作和電子商務的。c#作為一種新型的程序語言,是.net框架的一個重要組成部分,他和xml的關系頗深。本文就從一個方面來探討一下這二者的關系。即:看用c#如何來創建和讀取xml文檔。

一. 本文程序設計和運行的軟件環境:

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

(二)..net framework sdk beta 2

二. c#創建xml文檔:

在本文中我們來介紹一下用c#創建xml文檔的二種方法,這二種方法各有千秋,第一種創建起來更靈活,第二種創建起來更方便。

(一).c#創建xml文檔的第一種方法:

這一種方法是按照按照xml的結構一步一步的構建xml文檔。c#構建xml文檔通過.net framework sdk中的命名空間"system.xml"中封裝的各種類來實現的。下面就按照一個xml典型文檔結構來介紹一下。

(1).首先要創建一個空的xml文檔:

在命名空間"system.xml"中有一個類"xmldocument",c#通過這個類來描述xml文檔。下面是用c#創建一個xml文檔。

xmldoc = new system.xml.xmldocument ( ) ;

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

利用"xmldocument"類中的 "createnode" 方法可以創建一個指定類型的xml節點,"createnode" 方法的調用方法總共有三種,在本文中使用的其一般的方法,具體語法如下:

xmldocument.createnode method ( xmlnodetype , string , string )

然后在利用"xmldocument"類中的"appendchild"方法在xml文檔中加入此節點,用c#在xml文檔中加入聲明段落實現的語句如下:

xmlnode = xmldoc.createnode ( xmlnodetype.xmldeclaration , "" , "" ) ;
xmldoc.appendchild ( xmlnode ) ;


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

加入數據內容是通過元素,在"xmldocument"類中提供了二個方法:"createelement"和"createtextnode"。其中第一個方法是在xml中創建一個元素,另外一個方法是為創建的元素指定文本值。下面是為上面創建的xml文檔加入一個根元素。

xmlelem = xmldoc.createelement ( "" , "root" , "" ) ;
xmltext = xmldoc.createtextnode ( "root text" ) ;
注釋:其中"xmlelem"是創建的"xmlelement"對象,"xmltext"是"xmltext"對象

有了創建一個xml元素的例子,就可以根據xml文檔中數據的不同的結構來創建其他的數據了。

(二).c#創建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 ) ;
     //加入一個根元素
     xmlelem = xmldoc.createelement ( "" , "root" , "" ) ;
     xmltext = xmldoc.createtextnode ( "root text" ) ;
     xmlelem.appendchild ( xmltext ) ;
     xmldoc.appendchild ( xmlelem ) ;
     //加入另外一個元素
     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 ) ;
     //保存創建好的xml文檔
     try
     {
      xmldoc.save ( "c://data.xml" ) ; 
   }
   catch ( exception e )
     {
      //顯示錯誤信息
      console.writeline ( e.message ) ;
     }
     console.readline ( ) ;
    }
   }


(三).c#創建xml文檔的第二種方法:

在介紹完第一種方法以后,我想每一個讀者都感覺到用c#創建xml文檔是一項比較煩雜的工作了,因為不僅要了解創建的知識,還要了解文檔的結構,這樣創建的過程就是一步一步的了。下面就來介紹一種比較容易的創建方法,這種創建方法是直接定義xml文檔,然后把他保存到文件中就可以了。

(1).創建一個xml文檔:

這一點和第一種方法一樣,在這里就不介紹了。

(2).通過"xmldocument"類中的"loadxml"方法,直接在文檔中加入想要加入的xml數據。當然你加入的xml應該符合xml的語法,不然產生的文件也沒有什么意義了。下面是加入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文檔是通過"xmldocument"類中的"save"方法來實現的。具體如下:

doc.save ( "data.xml" ) ;

(四).c#創建xml文檔的第二種方法的源程序代碼(no2.cs):

using system ;
  using system.io ;
  using system.xml;
  public class sample
  {
    public static void main ( )
    {
      //創建一個xmldocument對象
      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>" ) ;
      //保存這個文檔到文件中
      doc.save ( "data.xml" ) ;
    }
  }  


用c#創建xml文檔的方法其實有很多,在這里只是選取了二種比較典型的方法加以介紹。但無論那一種方法,c#在創建xml的時候都需要用到.net framework sdk。所以了解并掌握這個類庫中的內容對于c#編程是十分必要的,在下面我們將來介紹一下用c#讀取xml中的數據,通過這你會發現,c#又是利用這個類庫實現這個功能的。

三.c#讀取xml文件:

本節將用c#來讀取本文中用第二種方法創建的xml文件,編譯no2.cs后,執行將產生"data.xml"文件,其中"data.xml"文件的數據結構如下:

<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>


在下面的內容中,我們利用c#讀取此文件,并用listview組件按照數據結構給顯示出來。下圖是讀取此xml后的運行界面:

圖01:c#讀取xml后的運行界面



要正確讀取xml數據,首先要了解xml的結構。根據上面的xml文件,可以知道此xml包含三個數據,下面就來看如何讀取這三條數據:

(1).裝入xml文件,形成數據流:

通過創建一個"xmldocument"對象,然后利用"load"方法,可以把xml文件裝入,具體如下:

xmldocument doc = new xmldocument ( ) ;
  // 裝入指定的xml文檔
  doc.load ( "c://data.xml" ) ;
(2).讀取xml文件,并顯示出來:

讀取xml是通過創建"xmlnodereader"對象來實現的,"xmlnodereader"對象主要是用來可以讀取xml的節點數據。在本文的程序中使用到了一些"xmlnodereader"的屬性,譬如"nodetype"屬性,用來判斷讀取得節點是什么類型。"value"是節點的值。下面是讀取xml文件并顯示在listview中的實現代碼,其中listview1是已經創建listview組件:

while ( reader.read ( ) ) 
{
//判斷當前讀取得節點類型
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):

在了解了上面的內容以后,可以得到用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 ( )
  {
  //初始化窗體中的各個組件
  initializecomponent ( ) ;
  }
  //清除程序中使用過的資源
  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#來讀取xml文檔" ;
  this.resumelayout ( false ) ;
 
  }
  static void main ( ) 
{
application.run ( new form1 ( ) ) ;
  }
 
  private void button1_click ( object sender , system.eventargs e )
  {
  listviewitem myitem = new listviewitem ( ) ;
  // 構建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" ) ;
  // 設定xmlnodereader對象來打開xml文件
  reader = new xmlnodereader ( doc ) ;
  // 讀取xml文件中的數據,并顯示出來
  while ( reader.read ( ) ) 
{
//判斷當前讀取得節點類型
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
{
//清除打開的數據流
if ( reader != null )
  reader.close ( ) ;
  }
  }
  }  


五.總結:

c#和xml的淵源是很深的,本文只是從一個側面反映了二者關系的密切程度。在.net framework sdk中存在許多可以直接操作xml的類庫,掌握這些類庫的使用方法,對用c#開發和xml相關程序是十分必要的。
菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美福利视频一区二区三区 | 中文字幕网站在线 | 少妇色诱麻豆色哟哟 | 亚洲视频在线免费看 | 亚洲男人天堂 | 精品一区视频 | 黄色高清视频网站 | 精品xxxx户外露出视频 | 色综合激情| 亚洲91精品 | bt 自拍 另类 综合 欧美 | 亚州综合 | 日本精品免费观看 | 亚洲国产精品高潮呻吟久久 | 久草在线观看福利 | 91社区在线观看 | 黄色片网站在线免费观看 | 日本中文字幕高清 | 黄色免费av网站 | 国产一国产精品一级毛片 | 国产精品久久久久久久久久免 | 国产成人精品一区二区视频免费 | 99视频有精品 | 久操福利视频 | 草久免费| 精品国产一级毛片 | 69av导航 | 久久蜜桃香蕉精品一区二区三区 | 久久久成人动漫 | 日韩视频一| 免费观看国产精品视频 | 国产成人精品午夜视频' | 99麻豆久久久国产精品免费 | 久久精品日韩一区 | 成人一级免费视频 | 国产成人午夜高潮毛片 | 91九色福利 | 久久久婷婷一区二区三区不卡 | 鲁久久 | 在线成人影视 | 久久久久亚洲美女啪啪 |