读取xml到dataset中

本文介绍如何在C#中使用DataSet读取XML文件,并提供了提高读取效率的方法。默认情况下,ReadXML方法会尝试推断XML结构,对于大型文件这将影响效率。文章给出了通过预先提供Schema并设置XmlReadMode为IgnoreSchema来显著提升处理速度的方法。

C#其实是支持读取XML到Dataset的,但是可能直接读取效率不是特别的高。如果你的XML非常小的话,那么用这种方法再合适不过了。

使用方法:

using System.Data;
using System.Xml;
………………………….
DataSet myds=new DataSet();
myds.ReadXml(”yourxmlfilepath.xml”);
DataTable mytable=new DataTable();
mytable= myds.Tables[0];
String something;
something = mytable.Rows[1]["name"].ToString().Trim();
textBox1.Text=something;

That’s it.

注意:xml中每个节点都会做为dataset中的一个表,

取节点所有数据用,dataset.talbles["节点名"],这样取到当前节点有所一级子节点信息,孙节点是读不到的。

参考:http://www.diybl.com/course/4_webprogram/xml/xmlxl/2008920/144078.html#

提高读取速度的方法:

一直以来读取xml都是通过DataSet的ReadXML方法来解决,其他属性也都没有使用。在数据量小的时候倒也相安无事,直到今天读取一个20M的XML流才发现实在太影响效率了。

    默认情况下,ReadXML缺省情况下使用XmlReadMode.Auto方式读取,用以前的作法,由于xml文件里没有包含Scheme,DataSet会先推断xml的结构,然后再加载数据。可是对一个20M的流推断其结构效率可想而知。如果XmlReadMode采用的是除Auto和InferSchema(同样根据数据推断结构)之外的成员,那么除了行数会相应增加外,内容都被忽略。

    如何解决这个讨厌的问题呢,其实也很简单先给DataSet提供Schema(ReadXmlSchema方法),XmlReadMode设为IgnoreSchema即可。经过测试处理时间由几分钟提高到几秒示例如下:

   

 

 

1DataSet 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();

转载于:https://www.cnblogs.com/xtsjh/archive/2012/03/05/2380508.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值