.Net框架现在(至少)有四种不同的读取Xml字符串的方法.我已经使用了XmlDocument,XmlReader,XPath和XElement中的每一个,但在编码或执行期间使用哪个是最有效的?每个人都是为不同的任务而设计的,有什么优缺点?
更新: 使用XmlReader似乎是读取xml最快捷的方式,这听起来对我很合理,但有其局限性.我想知道XmlDocument和XLinq之间是否存在非连续访问xml的性能差异.
更新: 我发现一些帖子比较了加载xml文档的不同方法.XmlReader是最快的,在您加载具有10,000+节点的文档之前,XmlDocument和LINQ to XML之间存在微不足道的差异,其中LINQ to XML出现在前面.
http://www.nearinfinity.com/blogs/page/jferner?entry=performance_linq_to_sql_vs
http://www.hanselman.com/blog/AtAGlanceXmlReaderVsXPathNavigatorVsXmlDocument.aspx
Coincoin.. 13
最常见的三种阅读方法是:
XmlDocument 它以树结构读取整个文件,然后可以使用XPath或浏览所有节点来访问它.由于整个XML结构必须加载到内存中,因此对于非常大的文件需要大量内存.非常好用,适用于较小的文件(少于几兆).
XmlReader 快速,但也是一个真正的痛苦,因为它是顺序的.如果您需要返回,则不能,并且XML结构通常很容易出现无序的订单.此外,如果您从非结束的XML流中读取,这可能是唯一的方法.
XML序列化程序 这基本上可以为您完成所有工作,您提供模型的根对象,并为您创建和读取XML.但是,您几乎无法控制结构,阅读旧版本的对象会很痛苦.所以这对持久性不会很好.
XDocument和LINQ to XML 正如Daniel Straight指出的那样.但我不知道评论是否足够.我邀请任何人编辑帖子并添加缺少的信息.
现在写作是另一回事.维护XmlDocument并使用XmlWriter是一件轻而易举的事.
根据我的经验,我会说最好的组合是使用XmlWriter编写并使用XmlDocument读取.
最常见的三种阅读方法是:
XmlDocument 它以树结构读取整个文件,然后可以使用XPath或浏览所有节点来访问它.由于整个XML结构必须加载到内存中,因此对于非常大的文件需要大量内存.非常好用,适用于较小的文件(少于几兆).
XmlReader 快速,但也是一个真正的痛苦,因为它是顺序的.如果您需要返回,则不能,并且XML结构通常很容易出现无序的订单.此外,如果您从非结束的XML流中读取,这可能是唯一的方法.
XML序列化程序 这基本上可以为您完成所有工作,您提供模型的根对象,并为您创建和读取XML.但是,您几乎无法控制结构,阅读旧版本的对象会很痛苦.所以这对持久性不会很好.
XDocument和LINQ to XML 正如Daniel Straight指出的那样.但我不知道评论是否足够.我邀请任何人编辑帖子并添加缺少的信息.
现在写作是另一回事.维护XmlDocument并使用XmlWriter是一件轻而易举的事.
根据我的经验,我会说最好的组合是使用XmlWriter编写并使用XmlDocument读取.
还有XDocument和LINQ to XML,在程序员时间方面,我认为这是最有效的.