当前位置: 首页 > 面试题库 >

在PHP中处理大型XML的最佳方法

汝弘深
2023-03-14
问题内容

我必须在php中解析大型XML文件,其中之一是6.5
MB,它们甚至可能更大。如我所读,SimpleXML扩展将整个文件加载到一个对象中,这可能不是很有效。以您的经验,最好的方法是什么?


问题答案:

对于大文件,您将要使用SAX解析器而不是DOM解析器。

使用DOM解析器,它将读取整个文件并将其加载到内存中的对象树中。使用SAX解析器,它将顺序读取文件并调用用户定义的回调函数来处理数据(开始标记,结束标记,CDATA等)。

使用SAX解析器,您需要自己维护状态(例如,您当前所处的标记),这会使它变得更加复杂,但是对于大文件,这将是更有效的内存管理方式。



 类似资料:
  • 目前,我的应用程序的某些部分在将大量数据加载到报告表时遇到了速度问题。报告表中的数据是从多个表中提取的,并运行一些复杂的查询,但这是必需的。 除了优化代码,我的问题是,您个人如何处理需要向用户显示的大量数据,最佳实践是什么? 目前我正在处理所有的数据,然后通过javascript库生成数据表。 我知道的事情: 用户不需要一次看到所有数据 用户需要能够搜索所有数据 用户需要能够过滤数据 最好的方法真

  • 问题内容: 现在我的页面看起来像这样: 我的工作方式可行,但是对于显而易见的事情却非常繁琐和乏味:假设我在代码中间的某个地方调用了一个函数,或者想检查变量的值,或者验证数据库查询返回有效结果,如果失败,我想输出错误?我将不得不制作另一个if / else块,并将所有代码移到新的if块内。这似乎不是一种明智的处理方式。 我一直在阅读有关try / catch的内容,并一直在考虑将我的所有代码放入tr

  • 问题内容: 正如任何Spring程序员所知道的,我正在一个Spring WebFlow项目中,该项目在XML文件中具有很多属性值。我有数据库用户名,密码,URL等。 我们将Eclipse与Spring WebFlow和Maven结合使用。我们试图让SA执行构建,但是SA不想进入XML文件来更改值,但是另一方面,我们不知道生产值。我们如何处理呢? 问题答案: 大多数SA更愿意和更有信心处理文件而不是

  • 问题内容: 我有一个很大的xml文件,其中包含许多子元素。我希望能够运行一些xpath查询。我尝试在Java中使用vtd- xml,但有时会出现内存不足错误,因为xml太大,无法容纳到内存中。是否有替代方法来处理如此大的xml。 问题答案: 尝试http://code.google.com/p/jlibs/wiki/XMLDog 它使用sax执行xpaths,而无需创建xml文档的内存表示形式。

  • 问题内容: 我正在使用Spring批处理下载一个大文件来处理它。场景很简单: 无需保存输入文件数据。 我们可能同时运行多个(相同场景的)作业实例 我正在寻找最佳实践来处理这种情况。 我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。) 另一方面,我可以下载它并将其保留在内存中,但

  • 问题内容: 我正在尝试编写一个小型节点应用程序,该应用程序将搜索并解析文件系统上的大量文件。为了加快搜索速度,我们尝试使用某种类型的map reduce。该计划将是以下简化方案: Web请求带有搜索查询 启动3个进程,每个进程分配1000个(不同)文件 进程完成后,它将“返回”结果回到主线程 一旦所有进程完成,主线程将通过返回组合结果作为JSON结果来继续 我对此有以下疑问: 这在Node中可行吗