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

首頁 > 開發(fā) > XML > 正文

C#的Web XML編程

2024-09-05 20:56:02
字體:
供稿:網(wǎng)友

由于xml的易共享性等眾多優(yōu)點(diǎn),xml技術(shù)越來越多地被應(yīng)用于企業(yè)數(shù)據(jù)處理等領(lǐng)域,如應(yīng)用于企業(yè)報(bào)表、新聞發(fā)布、會計(jì)數(shù)據(jù)處理等等。

xml正快速成為從中間層傳送數(shù)據(jù)到桌面的工具,由于xml的數(shù)據(jù)可以通過中間層代理與多種后端(數(shù)據(jù)庫)源集成,目前絕大多數(shù)數(shù)據(jù)庫制造商已全面支持xml技術(shù),提供了各種強(qiáng)大功能處理xml數(shù)據(jù)。

microsoft的.net圍繞xml這一核心提供了一個強(qiáng)大而快速的開發(fā)工具——c#,它具有前所未有的高開發(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)容讀入一個streamreader類對象中,再用xmldatadocument類的dataset讀xml的方法去讀xml信息到dataset中,dataset再以dataview的方式賦給一個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)建該對象為了讀取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類,這非常重要,否則下次打開會顯示文件已經(jīng)被使用

對應(yīng)于顯示用的web form中datagrid的功能,我們需要增加下面的函數(shù):

protected void onselectname(object sender,eventargs e) {
session["select_name"]=(string)datagrid1.selecteditem.cells[1].text.tostring();
//把選定的 datagrid某行中的一個單元中的值(name)存入一個會話變量中,以便下一頁用
response.redirect("xml_manage.aspx");}
//轉(zhuǎn)到有增加刪除功能的管理頁

web form加入以下代碼:

<asp:datagrid id=datagrid1 runat="server" onselectedindexchanged="onselectname" >
<property name="columns">
<asp:buttoncolumn text="選擇" commandname="select" />
</property>

代碼的作用是當(dāng)按了“選擇”按鈕后,執(zhí)行onselectname()中的程序,把選定的 datagrid中某行中的一個單元中的值(name)存入一個會話變量中,然后轉(zhuǎn)到下一頁。

增加xml文件內(nèi)容

在web form中增加相應(yīng)的幾個textbox和一個用于提交的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
……
//使用同類語句,在元素name下插入另一些元素如country、e-mail地址和留言等
xmldocument.save(server.mappath(datafile));
//最后保存這個xml文檔
navigator=null ;
xmldocument=null ;
//釋放xml文檔,這樣其他程序可以用它

上述代碼使用documentnavigator類增加元素和內(nèi)容,注意使用后要釋放資源。

刪除xml文件內(nèi)容

刪除選定記錄,對于你上面選擇的節(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));
//最后保存這個xml文檔
navigator=null;
//釋放類
xmldocument=null ;
//釋放xml文檔,這樣其他程序可以用它

如需將xml文件中所有信息清除,使用“navigator.removechildren();”語句即可實(shí)現(xiàn)。

結(jié)論

綜上可知,c#編寫xml應(yīng)用程序不但快捷而且方便,在編寫asp.net數(shù)據(jù)庫應(yīng)用程序時(shí),用xml文件替代一些小的table,能減少許多數(shù)據(jù)庫存取連接,也能讓其他網(wǎng)絡(luò)程序更易使用這些數(shù)據(jù)。

目前xml的主要瓶頸在于文件系統(tǒng)的讀出或?qū)懭耄蕬?yīng)使用更多內(nèi)存和緩存方式,如果信息量不是巨大無比且修改量也較小,而瀏覽量巨大的話,使用xml方法將是很好的選擇;相反,如數(shù)據(jù)量巨大,應(yīng)考慮使用支持xml的數(shù)據(jù)庫,無論你使用ado+連接其他數(shù)據(jù)庫,還是使用sql server,c#中都有直接的類函數(shù)可讓這些數(shù)據(jù)庫中的信息直接和xml交互訪問。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 999精品国产 | xnxx 日本19 | 999久久久精品 | 黄色美女网站免费看 | 国产精品自拍99 | 在线观看美女av | 超碰97最新 | 成人一级黄色大片 | 国产精品视频一区二区三区综合 | 中文字幕在线日韩 | 毛片一级网站 | 久久久久久久黄色片 | 中国7777高潮网站 | 亚洲一级电影在线观看 | 国产精品av久久久久久久久久 | 毛片视频网站在线观看 | 精品999www| 国产小视频在线观看 | 正在播放91 | 久久久久久久久久久亚洲 | 女人解衣喂奶电影 | 香蕉国产9| 国产午夜免费福利 | 久久欧美亚洲另类专区91大神 | 九一免费在线观看 | 亚洲影视在线观看 | 99亚洲伊人久久精品影院红桃 | 激情综合网俺也去 | 久久成人黄色 | 黄色网址在线视频 | h网站在线观看 | 国产亚洲精品网站 | 欧美精品一区二区久久 | 国产午夜探花 | 青草视频在线观看视频 | 91 在线视频观看 | 99在线热播精品免费 | av电影在线观看网站 | 亚洲人成网站免费播放 | 中国av免费在线观看 | 日本欧美一区二区三区视频麻豆 |