fulin1029
博客园
|
首页
|
发新随笔
|
发新文章
|
联系
|
订阅
|
管理
随笔:11 文章:0 评论:16 引用:0
通过DataSet读取XML的效率问题
一直以来读取xml都是通过DataSet的ReadXML方法来解决,其他属性也都没有使用。在数据量小的时候倒也相安无事,直到今天读取一个20M的XML流才发现实在太影响效率了。
默认情况下,ReadXML缺省情况下使用XmlReadMode.Auto方式读取,用以前的作法,由于xml文件里没有包含Scheme,DataSet会先推断xml的结构,然后再加载数据。可是对一个20M的流推断其结构效率可想而知。如果XmlReadMode采用的是除Auto和InferSchema(同样根据数据推断结构)之外的成员,那么除了行数会相应增加外,内容都被忽略。
如何解决这个讨厌的问题呢,其实也很简单先给DataSet提供Schema(ReadXmlSchema方法),XmlReadMode设为IgnoreSchema即可。经过测试
处理时间由几分钟提高到几秒
。
示例如下:
1
DataSet ds
=
new
DataSet();
2
using
(StringReader sr
=
new
StringReader( xxx ))
3
{
4
ds.ReadXmlSchema(sr);
5
}
6
ds.Tables[
0
].BeginLoadData();
7
8
9
using
(StringReader sr
=
new
StringReader( xxx ))
10
{
11
ds.ReadXml(sr, XmlReadMode.IgnoreSchema);
12
}
13
ds.Tables[
0
].EndLoadData();
绿色通道:
好文要顶
关注我
收藏该文
与我联系
发表于 2005-07-01 18:21
顺治帝
阅读(4478)
评论(9)
编辑
收藏
评论
1280802
#1楼
不错不错....
嘿嘿,又收获一点^^
#2楼
.NET果然博大精深,在傻瓜中见智慧啊 ^_^
#3楼
试了一下,不行,是不是那个地方错了,XXX代表的是路径吧?
#4楼
xxx是代表路径。
#5楼
有没有人用这个方法成功过,我现在要读取一个20M的XML,急,高手们帮帮忙呀!
#6楼
当然有啦,要不也不会写出来了。
#7楼
,老大,已运行就是这个样子
Data at the root level is invalid. Line 1, position 1.
#8楼
一起研究。。
#9楼
有人试过1G的包吗?还有没有什么办法将xml导到oracle数据库中
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
美国空军拟最多购买1.8万台iPad 2
·
伊朗封杀Gmail和Facebook等互联网服务
·
分析称专利之争让谷歌苹果两败俱伤
·
Android平台发现新型手机病毒Rootsmart
·
HTC首款Android4.0手机大曝光
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
<
2005年7月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
公告
昵称:
顺治帝
园龄:
7年4个月
粉丝:
0
关注:
0
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
Cuyahoga(2)
(rss)
我是小小程序员(2)
(rss)
随笔档案
2006年5月 (3)
2006年3月 (1)
2005年7月 (1)
2005年1月 (1)
2004年12月 (1)
2004年10月 (2)
2004年9月 (2)
C#
http://blog.joycode.com/moslem/archive/2004/11/02/37805.aspx
C#
最新评论
阅读排行榜
评论排行榜
推荐排行榜