首页 > 编程 > C# > 正文

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

2019-10-29 21:44:42
字体:
来源:转载
供稿:网友
这篇文章主要介绍了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#程序设计有所帮助。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表