C#实现提高xml读写速度的方法

本文实例讲述了C#实现提高xml读写速度的方法。分享给大家供大家参考。具体实现方法如下:

dim domxmldocument as system.xml.xmldocument  

  dim tmppath as string = apptempfilepath  

  dim xmlfile as string = tmppath + "\testxml.xml"  

'窗体加载事件  

  private sub testxml_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load  

  '读xml过程测试通过  

  dim domxmldocument as system.xml.xmldocument  

  dim tmppath as string = apptempfilepath  

  dim xmlfile as string = tmppath + "\testxml.xml"  

  dim reader as system.xml.xmlreader = nothing  

  try  

  reader = new xml.xmltextreader(xmlfile)  

  'reader.  

  while reader.read  

  me.lboxxml.items.add(reader.name + reader.value)  

  end while  

  catch ex as exception  

  msgbox(ex.message)  

  finally  

  if not (reader is nothing) then  

  reader.close()  

  end if  

  end try  

  end sub  

  '载入xml事件  

  private sub btnxmlload_click(byval sender as system.object, byval e as system.eventargs) handles btnxmlload.click  

  'me.lboxxml.items.clear()  

  ''读xml过程测试通过  

  'dim reader as system.xml.xmlreader = nothing  

  'try  

  ' reader = new xml.xmltextreader(xmlfile)  

  ' while reader.read  

  ' me.lboxxml.items.add(reader.name + ":" + reader.value)  

  ' end while  

  'catch ex as exception  

  ' msgbox(ex.message)  

  'finally  

  ' if not (reader is nothing) then  

  ' reader.close()  

  ' end if  

  'end try  

  dim ds as new dataset  

  try  

  '如果直接使用ds做datasource则不会展开datagrid,用dv则能直接显示正确。  

  ds.readxml(xmlfile)  

  dim tb as datatable  

  dim dv as dataview  

  tb = ds.tables(0)  

  dv = new dataview(tb)  

  datagrid1.datasource = dv  

  'datagrid1.datamember = "testxmlmember"  

  'datagrid1.datamember = "employeefname"  

  'dim dxd as new xmldatadocument  

  catch ex as exception  

  msgbox(ex.message.tostring)  

  end try  

  end sub  

  '保存新建xml内容事件  

  private sub btnsavenew_click(byval sender as system.object, byval e as system.eventargs) handles btnsavenew.click  

  dim mytw as new xmltextwriter(tmppath + "\testxmlwrite.xml", nothing)  

  mytw.writestartdocument()  

  mytw.formatting = formatting.indented  

  mytw.writestartelement("team")  

  mytw.writestartelement("player")  

  mytw.writeattributestring("name", "george zip")  

  mytw.writeattributestring("position", "qb")  

  mytw.writeelementstring("nickname", "zippy")  

  mytw.writeelementstring("jerseynumber", xmlconvert.tostring(7))  

  mytw.writeendelement()  

  mytw.writeendelement()  

  mytw.writeenddocument()  

  mytw.close()  

  end sub

文件很大的情况下,可以考虑手动实现数据更新适配器,比如手动实现一个xml节点搜索/更新,这样就不用重写整个xml。
如果程序的i/o不是主要问题,还是用实体类整个的写入更新吧,毕竟数据的完整性是第一位的。
如是文章类的,对该目录建一个xml索引文件来存放文章的编号,url等,用xml的attribute作为标记不同字段,内容页面可以用另外的html或xml页面存放,用linq to xml操作数据,效率不是很差,个人观点。当搜索时候只要查询指定文件名xml或文件类型就可以了。

希望本文所述对大家的C#程序设计有所帮助。