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

首頁(yè) > 開(kāi)發(fā) > XML > 正文

C#操作XML簡(jiǎn)要教程

2024-09-05 20:55:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
由于xml的易共享性等眾多優(yōu)點(diǎn),xml技術(shù)越來(lái)越多地被應(yīng)用于企業(yè)數(shù)據(jù)處理等領(lǐng)域,如應(yīng)用于企業(yè)報(bào)表、新聞發(fā)布、會(huì)計(jì)數(shù)據(jù)處理等等。
  xml正快速成為從中間層傳送數(shù)據(jù)到桌面的工具,由于xml的數(shù)據(jù)可以通過(guò)中間層代理與多種后端(數(shù)據(jù)庫(kù))源集成,目前絕大多數(shù)數(shù)據(jù)庫(kù)制造商已全面支持xml技術(shù),提供了各種強(qiáng)大功能處理xml數(shù)據(jù)。
  microsoft的.net圍繞xml這一核心提供了一個(gè)強(qiáng)大而快速的開(kāi)發(fā)工具——c#,它具有前所未有的高開(kāi)發(fā)效率,特別是在xml編程方面。
  c#提供了許多相關(guān)類處理xml數(shù)據(jù),如處理stream的類: xmlreader和xmlwriter; dom的類:xmlnode、xmldocument和xmlelement等; xpath的類:xmlnavigator;xslt的類:xsltransform。

 

  顯示xml文件內(nèi)容
  用c#編程實(shí)現(xiàn)顯示xml文件中信息的方法是使用.net提供的標(biāo)準(zhǔn)類把xml文件內(nèi)容讀入一個(gè)streamreader類對(duì)象中,再用xmldatadocument類的dataset讀xml的方法去讀xml信息到dataset中,dataset再以dataview的方式賦給一個(gè)web form上的datagrid,最后由databind顯示數(shù)據(jù),具體實(shí)現(xiàn)代碼如下:
  using system.xml;
  //處理xml必須加的namespace,還需在references中加system.xml.dll
  using system.io;
  //讀xml文件必須加的namespace
  然后在page_load中加入如下代碼:
  protected void page_load(object sender, eventargs e){
  string datafile="guest.xml" ;
  //假設(shè)xml文件名為guest.xml
  streamreader tyj=new streamreader(server.mappath(datafile));
  xmldatadocument datadoc = new xmldatadocument();
  //創(chuàng)建該對(duì)象為了讀取xml
  datadoc.dataset.readxml(tyj);
  //讀取guest.xml文件內(nèi)容
  datagrid1.datasource = datadoc.dataset.tables[0].defaultview;
  //設(shè)置datagrid數(shù)據(jù)源
  datagrid1.databind();
  //綁定
  datadoc=null ;
  //釋放資源
  tyj.close();}
  //釋放streamreader類,這非常重要,否則下次打開(kāi)會(huì)顯示文件已經(jīng)被使用
  對(duì)應(yīng)于顯示用的web form中datagrid的功能,我們需要增加下面的函數(shù):
  protected void onselectname(object sender,eventargs e) {
  session["select_name"]=(string)datagrid1.selecteditem.cells[1].text.tostring();
  //把選定的 datagrid某行中的一個(gè)單元中的值(name)存入一個(gè)會(huì)話變量中,以便下一頁(yè)用
  response.redirect("xml_manage.aspx");}
  //轉(zhuǎn)到有增加刪除功能的管理頁(yè)
  web form加入以下代碼:
  <asp:datagrid id=datagrid1 runat="server" onselectedindexchanged="onselectname" >
  <property name="columns">
  <asp:buttoncolumn text="選擇" commandname="select" />
  </property>
  代碼中劃線部分的作用是當(dāng)按了“選擇”按鈕后,執(zhí)行onselectname()中的程序,把選定的 datagrid中某行中的一個(gè)單元中的值(name)存入一個(gè)會(huì)話變量中,然后轉(zhuǎn)到下一頁(yè)。

 

  增加xml文件內(nèi)容
  在web form中分別增加相應(yīng)的四個(gè)label(姓名,來(lái)自哪里,email地址,留言內(nèi)容)和四個(gè)textbox和一個(gè)用于提交的button,并為這button增加如下代碼:
  string datafile = "guest.xml" ;xmldocument xmldocument = new xmldocument() ;
  xmldocument.load(server.mappath(datafile)) ;
  //把guest.xml讀到xmldocument中
  documentnavigator navigator = new documentnavigator(xmldocument) ;
  //最重要的類
  navigator.movetodocumentelement() ;
  navigator.insert(system.xml.treeposition.firstchild, xmlnodetype.element, "guest","","") ;//插入節(jié)點(diǎn)guest  
    navigator.insert(system.xml.treeposition.firstchild, xmlnodetype.element, "name","","") ;
  navigator.insert(system.xml.treeposition.firstchild, xmlnodetype.text,"name","","") ;
  navigator.value="/name.text" ;
  //為該節(jié)點(diǎn)賦值
  navigator.movetoparent() ;
  //返回父節(jié)點(diǎn) guest
  ……
  //使用同類語(yǔ)句,在元素name下插入另一些元素如country、e-mail地址和留言等
  xmldocument.save(server.mappath(datafile));
  //最后保存這個(gè)xml文檔
  navigator=null ;
  xmldocument=null ;
  //釋放xml文檔,這樣其他程序可以用它
  上述代碼使用documentnavigator類增加元素和內(nèi)容,注意使用后要釋放資源。
  刪除xml文件內(nèi)容
  刪除選定記錄,對(duì)于你上面選擇的節(jié)點(diǎn),下面代碼可查找到該節(jié)點(diǎn)并清除選中的信息:
  string datafile = "guest.xml" ;
  xmldocument xmldocument = new xmldocument() ;
  xmldocument.load(server.mappath(datafile)) ;
  //把guest.xml讀到xmldocument中
  documentnavigator navigator = new documentnavigator(xmldocument) ;
  navigator.movetodocumentelement() ;
  navigator.select("/guests/guest[name=""+session["select_name"]+""]");
  //參數(shù)是xpath
  navigator.removeselected();
  //執(zhí)行刪除
  xmldocument.save(server.mappath(datafile));
  //最后保存這個(gè)xml文檔
  navigator=null;
  //釋放類
  xmldocument=null ;
  //釋放xml文檔,這樣其他程序可以用它
  如需將xml文件中所有信息清除,使用“navigator.removechildren();”語(yǔ)句即可實(shí)現(xiàn)。

 

  結(jié) 論
  綜上可知,c#編寫(xiě)xml應(yīng)用程序不但快捷而且方便,在編寫(xiě)asp.net數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),用xml文件替代一些小的table,能減少許多數(shù)據(jù)庫(kù)存取連接,也能讓其他網(wǎng)絡(luò)程序更易使用這些數(shù)據(jù)。
  目前xml的主要瓶頸在于文件系統(tǒng)的讀出或?qū)懭耄蕬?yīng)使用更多內(nèi)存和緩存方式,如果信息量不是巨大無(wú)比且修改量也較小,而瀏覽量巨大的話,使用xml方法將是很好的選擇;相反,如數(shù)據(jù)量巨大,應(yīng)考慮使用支持xml的數(shù)據(jù)庫(kù),無(wú)論你使用ado+連接其他數(shù)據(jù)庫(kù),還是使用sql server,c#中都有直接的類函數(shù)可讓這些數(shù)據(jù)庫(kù)中的信息直接和xml交互訪問(wèn)。



收集最實(shí)用的網(wǎng)頁(yè)特效代碼!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 邓州市| 汤阴县| 哈密市| 鲜城| 永德县| 天峨县| 红河县| 洪泽县| 夏河县| 城口县| 肃南| 聂荣县| 龙山县| 武川县| 澄迈县| 赞皇县| 涞源县| 鸡西市| 泌阳县| 嘉义市| 张家口市| 金寨县| 香河县| 金沙县| 宣恩县| 恭城| 饶河县| 正定县| 兖州市| 时尚| 拜泉县| 荥阳市| 琼海市| 衡山县| 行唐县| 宝兴县| 阿城市| 增城市| 保山市| 枝江市| 长葛市|