加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – XPathNavigator和XmlReader之间的速度差异到底有多大?

发布时间:2020-12-16 23:10:17 所属栏目:百科 来源:网络整理
导读:我有一个相当大的 XML文件,我需要解析为.NET类结构(映射到固定长度的记录格式并通过MQ传输).性能很重要,但并非绝对关键. 我几乎总是使用XPathNavigator来读取XML文件,因为它比XmlReader容易得多.另一方面,我知道XmlReader比XPathNavigator更快,因为理论上它
我有一个相当大的 XML文件,我需要解析为.NET类结构(映射到固定长度的记录格式并通过MQ传输).性能很重要,但并非绝对关键.

我几乎总是使用XPathNavigator来读取XML文件,因为它比XmlReader容易得多.另一方面,我知道XmlReader比XPathNavigator更快,因为理论上它一次只读取一个节点,而XPathNavigator必须读取足以执行XPath,可能是整个文档.

我的问题是:它真的快多少?阅读几千个节点会有明显的区别吗?什么是我几乎不得不切换到XmlReader的转折点?或者XPathNavigator是否经过优化以至于它始终是一个不错的选择?

我的大多数XML经验都是在相对较小的文件上,因此我正在寻找任何使用大文件的人的输入.

解决方法

据我所知,你可以获得XPathNavigator实现的唯一地方是.Xml.Linq.XDocument或XPathDocument,它们都将整个树保存在内存中.

另一方面,XmlReader可以检索和解析XML流,而无需将一组节点收集到树中.

因此,假设您以仅向前的方式收集所有必需的数据,那么对于大型数据集,XmlReader应该在以下基础上执行XPathNavigator: –

>无论如何,您必须反序列化XML流以填充文档和>您不必将大量项目加载到内存中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读