通过DataSet读取XML的效率问题

    一直以来读取xml都是通过DataSet的ReadXML方法来解决,其他属性也都没有使用。在数据量小的时候倒也相安无事,直到今天读取一个20M的XML流才发现实在太影响效率了。
    默认情况下,ReadXML缺省情况下使用XmlReadMode.Auto方式读取,用以前的作法,由于xml文件里没有包含 Scheme,DataSet会先推断xml的结构,然后再加载数据。可是对一个20M的流推断其结构效率可想而知。如果XmlReadMode采用的是除Auto和InferSchema(同样根据数据推断结构)之外的成员,那么除了行数会相应增加外,内容都被忽略。
    如何解决这个讨厌的问题呢,其实也很简单先给DataSet提供Schema(ReadXmlSchema方法),XmlReadMode设为IgnoreSchema即可。经过测试处理时间由几分钟提高到几秒 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客。示例如下:
   
 1 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客DataSet ds = new DataSet();
 2 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客            using (StringReader sr = new StringReader( xxx ))
 3 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客             通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客{
 4 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客                ds.ReadXmlSchema(sr);
 5 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客            }
 6 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客            ds.Tables[0].BeginLoadData();
 7 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客
 8 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客
 9 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客            using (StringReader sr = new StringReader( xxx ))
10 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客             通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客{
11 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客                ds.ReadXml(sr, XmlReadMode.IgnoreSchema);
12 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客            }
13 通过DataSet读取XML的效率问题 - 精彩 - 精彩的博客            ds.Tables[0].EndLoadData();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值