亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 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相關程序是十分必要的。
菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频在线观看视频| 国产一区二区三区丝袜| 欧美国产日韩一区二区在线观看| 国产伦精品免费视频| 成人情趣片在线观看免费| 亚洲激情视频网站| 日韩一区二区精品视频| 欧美特黄级在线| 国产精品1234| 日韩激情av在线免费观看| 国产手机视频精品| 亚洲综合在线中文字幕| 国产偷亚洲偷欧美偷精品| 亚洲精品wwwww| 亚洲黄在线观看| 欧美激情中文字幕在线| 精品视频—区二区三区免费| 久久99热精品这里久久精品| 亚洲最大的免费| 国产精品美女久久久久av超清| 成人激情视频免费在线| 亚洲视频第一页| 国产精品嫩草视频| 亚洲精品午夜精品| 久久免费视频在线| 色先锋久久影院av| 亚洲黄色www网站| 国产精品视频99| 亚洲午夜未满十八勿入免费观看全集| 亚洲午夜国产成人av电影男同| 疯狂蹂躏欧美一区二区精品| 亚洲最新av在线| 懂色av中文一区二区三区天美| 国产精品欧美激情| 久久视频在线观看免费| 久久伊人精品天天| 亚洲一区二区福利| 91精品久久久久久久久久久久久| 91精品视频免费看| 亚洲石原莉奈一区二区在线观看| 国产精品观看在线亚洲人成网| 亚洲第一精品福利| 在线亚洲午夜片av大片| 亚洲精品欧美一区二区三区| 色与欲影视天天看综合网| 亚洲国产精品网站| 久久久精品美女| 欧美成人亚洲成人| 日韩欧美中文免费| 国产成人极品视频| 日韩av一区在线| 国产激情999| 亚洲精品在线观看www| 久久99青青精品免费观看| 精品色蜜蜜精品视频在线观看| 亚洲欧美在线看| 国产日韩欧美在线播放| 在线成人免费网站| 91大神福利视频在线| 亚洲图片欧美日产| 黑人巨大精品欧美一区二区免费| 日韩一二三在线视频播| 亚洲精品视频中文字幕| 欧美一区第一页| 日韩在线视频免费观看| 亚洲精品色婷婷福利天堂| 亚洲综合av影视| 91国语精品自产拍在线观看性色| 日韩欧美国产网站| 亚洲在线观看视频网站| 亚洲人成伊人成综合网久久久| 国产精品成人一区| 国产精品成熟老女人| 亚洲综合中文字幕68页| 日韩欧美国产成人| 成人网址在线观看| 九九九热精品免费视频观看网站| 富二代精品短视频| 精品久久久久久久久久久久久| 国产剧情日韩欧美| 欧美猛交免费看| 日韩三级影视基地| 91色在线观看| 精品高清一区二区三区| 日韩精品一二三四区| 夜夜嗨av色一区二区不卡| 久久99久久久久久久噜噜| 91日韩在线视频| 欧美日韩美女在线| 91亚洲人电影| 国产91av在线| 欧美日韩国产中文精品字幕自在自线| 91po在线观看91精品国产性色| 国产一区二区黑人欧美xxxx| www.亚洲成人| 亚洲一区二区三区成人在线视频精品| 中文字幕一区日韩电影| 国产精品日韩欧美综合| 人九九综合九九宗合| 日韩三级影视基地| 北条麻妃一区二区三区中文字幕| 国产精品久久77777| 日韩免费观看网站| 奇米一区二区三区四区久久| 亚洲国产精品人人爽夜夜爽| 国产精品天天狠天天看| 亚洲欧美日韩精品久久奇米色影视| 日韩一区二区三区在线播放| 高清欧美性猛交| www.欧美视频| 成人a在线视频| 日韩美女福利视频| 欧美国产亚洲精品久久久8v| 亚洲成人黄色在线| 欧美成人精品h版在线观看| 亚洲成人网av| 亚洲成人教育av| 亚洲男人天堂2023| 欧美高清在线观看| 美日韩精品视频免费看| 亚洲美女视频网站| 美女精品视频一区| 国产97在线|日韩| 久久精品一区中文字幕| 中文字幕久久精品| 成人欧美一区二区三区黑人| 亚洲伊人久久大香线蕉av| 最近2019中文字幕一页二页| 久久久精品国产网站| 亚洲自拍小视频免费观看| 欧美日韩国内自拍| 91av在线免费观看视频| 精品视频—区二区三区免费| 日韩av在线影院| 国产偷国产偷亚洲清高网站| 少妇av一区二区三区| 亚洲护士老师的毛茸茸最新章节| 中文字幕久精品免费视频| 欧美天天综合色影久久精品| 国产一区二区av| 中文字幕9999| 欧美色视频日本版| 日韩成人高清在线| 久久精品国产v日韩v亚洲| 欧美电影免费看| 国产精品高清在线| 黑人巨大精品欧美一区二区免费| 国产精品久久中文| 精品视频在线观看日韩| 亚洲午夜av电影| 久久九九热免费视频| 国产成人在线一区二区| 欧美日韩亚洲一区二区| 国产玖玖精品视频| 中文字幕一精品亚洲无线一区| 欧美日韩第一视频| 精品一区二区三区四区在线| 亚洲精品久久久久久久久久久久| 91精品视频在线看| 国产精品美腿一区在线看| 国产亚洲精品久久久久动| 亚洲日韩欧美视频| 一区二区三区精品99久久| 欧美寡妇偷汉性猛交|