C#实现提高xml读写速度的方法
本文实例讲述了C#实现提高xml读写速度的方法。分享给大家供大家参考。具体实现方法如下:
dimdomxmldocumentassystem.xml.xmldocument dimtmppathasstring=apptempfilepath dimxmlfileasstring=tmppath+"\testxml.xml" '窗体加载事件 privatesubtestxml_load(byvalsenderassystem.object,byvaleassystem.eventargs)handlesmybase.load '读xml过程测试通过 dimdomxmldocumentassystem.xml.xmldocument dimtmppathasstring=apptempfilepath dimxmlfileasstring=tmppath+"\testxml.xml" dimreaderassystem.xml.xmlreader=nothing try reader=newxml.xmltextreader(xmlfile) 'reader. whilereader.read me.lboxxml.items.add(reader.name+reader.value) endwhile catchexasexception msgbox(ex.message) finally ifnot(readerisnothing)then reader.close() endif endtry endsub '载入xml事件 privatesubbtnxmlload_click(byvalsenderassystem.object,byvaleassystem.eventargs)handlesbtnxmlload.click 'me.lboxxml.items.clear() ''读xml过程测试通过 'dimreaderassystem.xml.xmlreader=nothing 'try 'reader=newxml.xmltextreader(xmlfile) 'whilereader.read 'me.lboxxml.items.add(reader.name+":"+reader.value) 'endwhile 'catchexasexception 'msgbox(ex.message) 'finally 'ifnot(readerisnothing)then 'reader.close() 'endif 'endtry dimdsasnewdataset try '如果直接使用ds做datasource则不会展开datagrid,用dv则能直接显示正确。 ds.readxml(xmlfile) dimtbasdatatable dimdvasdataview tb=ds.tables(0) dv=newdataview(tb) datagrid1.datasource=dv 'datagrid1.datamember="testxmlmember" 'datagrid1.datamember="employeefname" 'dimdxdasnewxmldatadocument catchexasexception msgbox(ex.message.tostring) endtry endsub '保存新建xml内容事件 privatesubbtnsavenew_click(byvalsenderassystem.object,byvaleassystem.eventargs)handlesbtnsavenew.click dimmytwasnewxmltextwriter(tmppath+"\testxmlwrite.xml",nothing) mytw.writestartdocument() mytw.formatting=formatting.indented mytw.writestartelement("team") mytw.writestartelement("player") mytw.writeattributestring("name","georgezip") mytw.writeattributestring("position","qb") mytw.writeelementstring("nickname","zippy") mytw.writeelementstring("jerseynumber",xmlconvert.tostring(7)) mytw.writeendelement() mytw.writeendelement() mytw.writeenddocument() mytw.close() endsub
文件很大的情况下,可以考虑手动实现数据更新适配器,比如手动实现一个xml节点搜索/更新,这样就不用重写整个xml。
如果程序的i/o不是主要问题,还是用实体类整个的写入更新吧,毕竟数据的完整性是第一位的。
如是文章类的,对该目录建一个xml索引文件来存放文章的编号,url等,用xml的attribute作为标记不同字段,内容页面可以用另外的html或xml页面存放,用linqtoxml操作数据,效率不是很差,个人观点。当搜索时候只要查询指定文件名xml或文件类型就可以了。
希望本文所述对大家的C#程序设计有所帮助。