XPathDocument与XmlDocument

Nex*_*xus 7 .net c# xml asp.net linq-to-xml

我正在开发ASP.NET中的博客引擎,并且实现了一个存储库以使用XML文件作为数据存储.XML存储库主要用于本地使用和测试目的.现在虽然它可能不是今天拥有大量可用内存和处理能力的计算机的问题,但我想了解一些具体细节:

  • XPathDocument是一个只读文档,而XmlDocument是一个读/写文档.因此,XPathDocument是否比XmlDocument更轻量级,因为它缺乏编写功能?
  • 我确信当您使用XmlDocument加载XML文档时,它会将整个文档加载到内存中,如果文档大小很大,则可能会出现问题.XPathDocument做同样的事情吗?如果是这样,如何在不首先将整个文档加载到内存中的情况下从XML文档中读取单个节点或一组节点?我知道我可以使用XmlTextReader,但这意味着我必须在顺序访问节点时解析整个文档.我希望能够使用XPath表达式查询XML文档.

无论如何,如果对象图的大小差别不大(XmlDocument和XPathDocument),那么完成工作就不会有什么坏处,但我想在这里实现最好的解决方案.

Mar*_*nen 6

XPathDocument也将完整的文档读入内存,这需要支持所有XPath轴,如前兄弟,前置,祖先,父,子,后代,后续兄弟,跟随.

如果要在不将整个文档加载到内存中的情况下执行XPath或XQuery查询,则必须查看专用的XML数据库,或者至少使用支持XQuery的XML数据类型的SQL数据库.例如,MS SQL服务器具有XML数据类型, 并支持一些(在我看来相当有限)XQuery版本.