首页 新闻 会员 周边 捐助

如何像SQL Server数据库一样操作XML呢?

0
悬赏园豆:5 [已解决问题] 解决于 2008-11-18 16:32

在c#中操作XML,一般我们对XML搜索或者读写的时候都要先对整个XML文档读出或者载入到内存,放入到数据集然后再进行查询,读写等操作,要是碰到XML数据量很大的时候效率就不高了,而MSSQL数据库不是这样,我们可以对数据库先进行查询,找出我们感兴趣的记录,然后把查询的结果放入数据集,这样可以很大程度上减少内存的占用。

那么请问如何才能做到像MSSQL一样对XML先查询再把查询结果放入数据集呢?

如果描述有错,请指正,谢谢!

SAP梦心的主页 SAP梦心 | 初学一级 | 园豆:67
提问于:2008-11-03 12:45
< >
分享
最佳答案
0

没有办法只载入一部分数据,因为SQL Server有服务器本身在支持,所以不需要让程序加载所有数据,但是XML没有一个“Server”,所以只能是全部加载到程序里

不过,想利用查询句法的话,倒是可以使用LINQ,可以实现基本相似的功能,这个应该可以处理你那个:“放入到数据集然后再进行查询,读写等操作”。因为只需要把XML文档加载进来,然后就可以直接像使用数据库一样使用LINQ对XML进行查询等操作,不通过数据集

丁学 | 专家六级 |园豆:18730 | 2008-11-03 13:16
其他回答(8)
0

这好像就是XML数据源的弱点吧,XML的数据量很大时,处理起来也比较耗时

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2008-11-03 12:53
0

在XML上再架一层,实现自动文件分组,索引排序等,当然前提是有这水平了

Gray Zhang | 园豆:17610 (专家六级) | 2008-11-03 12:58
0

两种方式:

1.XPath

2.Linq To XML

最后不适合处理大量数据

RicoRui | 园豆:3663 (老鸟四级) | 2008-11-03 13:19
0

想提高大数据量的速度,可以试试vtd-xml

http://vtd-xml.sourceforge.net/

wingoo | 园豆:1513 (小虾三级) | 2008-11-03 15:21
0

大数据的时候就不要放到XML里了,XML做一些数据配置信息,数据字典和模板类的数据源比较好。

金鱼 | 园豆:1090 (小虾三级) | 2008-11-03 16:32
0

之所以 ms sql 能跳过很多节取出用户关心的数据,是因为系统本身拥有大量结构开销的数据做辅助。如果你的xml很大,就我个人的理解看,你应该对它进行分解,把相关甚至独立的信息呈现出来,至少保证整个加载不会成为客户系统的负担。

为何不尝试多个小xml文件间的键关联,而整体实现你的大xml功能呢?那样就可以在物理上进行取舍加载了。

个人谬论:)

陛下 | 园豆:3938 (老鸟四级) | 2008-11-03 21:50
0

SQLSERVER 2005 以上版本提供 XML 数据类型,并提供XML数据类型的索引,你可以将XML文档保存到SQLSERVER 2005 中,然后用SQLSERVER 2005提供的SQL语句来检索。

下面是园子里一位兄弟写的

http://www.cnblogs.com/zhaohwi/archive/2006/07/06/444551.html

XML 数据类型的索引检索下来要明显低于传统的索引,但肯定要比你不建索引要高。这个问题我2年前曾经和微软全球技术中心的工程师讨论过,当时他们给过我一个测试数据,不过我已经找不到了。结论我还记得,就是上面所说的。

 

 

eaglet | 园豆:17139 (专家六级) | 2008-11-04 07:03
0
狂野---沙漠 | 园豆:355 (菜鸟二级) | 2008-11-05 10:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册