我正在ASP.NET中开发一个博客引擎,其中一个存储库已实现为使用XML文件作为数据存储。 XML存储库将主要用于本地使用和测试目的。现在,尽管可能不是当今拥有大量可用内存和处理能力的计算机的问题,但是尽管如此,我还是想知道一些具体细节:

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

  • 无论如何,如果对象图的大小相差不大(XmlDocument和XPathDocument),仅完成工作就不会有任何伤害,但是我想在这里实现最佳解决方案。

    最佳答案

    XPathDocument也将完整的文档读入内存,这是支持all the XPath axes所需要的,如ojit-sibling,previous,祖先,父级,父级,子级,后代,following-sibling,following。

    如果要执行XPath或XQuery查询而不将整个文档加载到内存中,则必须查看专用的XML数据库,或者至少查看具有XML数据类型且具有XQuery支持的SQL数据库。举例来说,MS SQL服务器具有an XML data type,并在其上支持某些(在我看来是相当有限的)XQuery版本。

    关于c# - XPathDocument与XmlDocument,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7135897/

    10-09 06:41