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#程序设计有所帮助。