C# XML,谁知道最快的大体积XML读取方式?

一个21MB的RSS文档大概10000项(item元素)数据我设计了一个针对它各个元素的查询功能。整个查询函数运行时间在0.6-0.7秒左右,除去载入那段代码用时,其余只... 一个21MB的RSS文档大概10000项(item元素)数据

我设计了一个针对它各个元素的查询功能。

整个查询函数运行时间在0.6-0.7秒左右,除去载入那段代码用时,其余只需0.0001秒左右

我用的是LINQ TO XML的XDoc.load()函数载入

您还有其它更快捷的方法吗?请列举出来,最后被采纳者另加分100+。

注:无需完整代码,只需说明用到哪些类与命名空间,以及他们的优缺点。

非常感谢您的帮助!
展开
 我来答
AnotherSilence
2010-06-03 · 超过26用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:81.8万
展开全部
C#处理XML的方式很多,可以是XMLReader,可以载入到XMLDocument中直接读取Document或者用LINQ查询,可以使用XPathNavigater,某些情况下,还可以转换成ADO.net中的数据类型如DataSet,再去查询,或者通过反序列化转换成某一个类的实例。

其中,最快的方式是 XMLReader,它是一个“向前的”,“只读的”流模型,非常类似ADO中的SqlDataReader。它的局限性是不可以浏览和修改。通常是在一个循环当中遍历XML文件,当然你要查询某个特定的值可以放在这个循环中,找到后就退出,只要循环体中处理的合适,速度肯定比你查询XMLDocument快,当然也比在XMLDocument文档的基础上转换后的速度快。

直接读取XMLDocument Load()方法载入的文档速度也会比你用linkQ要快,相对于XMLReader,XMLDocument 的优点是可以“浏览”,即你不需要按照文档的顺序读取,可以直接定位,在查阅的时候可以“倒回去”取值,如使用GetElementByTagName()方法等,虽然方便,但是速度比不上XMLReader,因为XMLReader最多只对文档扫描一遍。当然XMLDocument 也可以修改,类似XMLReader,XMLWriter可以修改。

下面是使用XMLReader的一个简单例子:

XmlReader xReader = XmlReader.Create("books.xml");
while (xReader.Read())
{
//按文档顺序遍历名为ElementName的节点
if (xReader.NodeType == XmlNodeType.Element && xReader.Name == "ElementName")
{
xReader.MoveToAttribute("YourAttrName");//按文档顺序直接跳到某个属性
richTextBox1.AppendText(xReader.Value); //获取值
}
}

命名空间:System.XML
XmlReader 提供的方法非常多,根据情况选择合适的方式,提高效率。
HAL9000PLUS
2010-06-02 · TA获得超过1279个赞
知道小有建树答主
回答量:663
采纳率:0%
帮助的人:721万
展开全部
XMLReader可以顺序处理比较大的XML。但是不结构化。

说回来,读入21M的内容只需要不到一秒,也够不可思议的了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwq19841016
2010-06-02 · 超过50用户采纳过TA的回答
知道答主
回答量:161
采纳率:0%
帮助的人:146万
展开全部
Linq 是经过内部封装之后的 读xml的类。如果想速度更快,就解除他的封装自己组装XmlDocument 直接 XML。load(); 这样应该更快吧。不过我没有读过这么大的xml格式的数据。随便说说,说的不对的话 你别介意。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CloudPRose
2010-06-03 · TA获得超过5175个赞
知道大有可为答主
回答量:3175
采纳率:66%
帮助的人:885万
展开全部
我没有比较过,从理论上说说。XmlReader的速度要优于XmlDocument,如果你只是读取的话。
至于和LinqToXml比较我不清楚。
Sax.Net据说也是比较快的,但是速度多少我不清楚。你可以试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式