默认情况下,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();

2

3



4

5

6

7

8

9

10



11

12

13
