.Net 框架现在(至少)有四种不同的读取 Xml 字符串的方法。我已经使用了 XmlDocument、XmlReader、XPath 和 XElement,但是在编码或执行期间使用哪一个最有效?每个都是为不同的任务而设计的,有什么优点和缺点?


更新:使用 XmlReader 似乎是读取 xml 的最快方法,这对我来说听起来很合理,但有其局限性。我想知道 XmlDocument 和 XLinq 在非顺序访问 xml 方面是否存在性能差异。


更新:我发现一些帖子比较了加载 xml 文档的不同方法。XmlReader 是最快的,XmlDocument 和 LINQ to XML 之间没有显着差异,直到您加载具有 10,000 多个节点的文档,其中 LINQ to XML 排在前面。

有帮助吗?

解决方案

三种最常见的阅读方法是:

Xml文档它以树结构读取整个文件,然后可以使用 XPath 或浏览所有节点来访问该文件。由于整个 XML 结构必须加载到内存中,因此非常大的文件需要大量内存。对于较小的文件(小于几兆)非常好且易于使用。

Xml阅读器速度很快,但使用起来也很痛苦,因为它是顺序的。如果您需要返回,则无法返回,而且 XML 结构通常很容易出现混乱的顺序。另外,如果您读取非结束的 XML 流,这可能是唯一的方法。

XML 序列化器这基本上为您完成了所有事情,您提供模型的根对象,它会为您创建和读取 XML。然而,您几乎无法控制结构,并且读取对象的旧版本是一种痛苦。所以这对于持久性来说不太有效。

XDocument 和 LINQ to XML正如丹尼尔·斯特雷特指出的那样。但我还不够了解,无法发表评论。我邀请任何人编辑该帖子并添加缺失的信息。


现在写作是另一回事了。维护 XmlDocument 很痛苦,而 XmlWriter 使用起来却很轻松。

根据我的经验,我想说,最好的组合是使用 XmlWriter 编写并使用 XmlDocument 读取。

其他提示

还有 XDocument 和 LINQ to XML,我认为就程序员时间而言,它们是迄今为止最有效的。

最快的一个是 XmlTextReader. 。来自 MSDN:

“代表一位读者,可提供快速,非空缺,远前访问XML数据的访问。”

更多这里: XmlTextReader 类

尽管这实际上取决于问题来决定哪种“方法”最适合使用。如果您只需要读取 XML 文件一次(例如:读取和缓存一些全局应用程序设置等),那么 XmlTextReader 是赢家。但请记住,它是只向前阅读器。如果您需要搜索/修改整个 XML,那么您可能应该使用 Xml文档类.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top