存储,解析和编辑数百个XML文件

时间:2013-07-24 11:59:29

标签: xml zend-framework large-data

我开发了一个界面,用户将上传一个包含数百个XML文件的zip文件,XML文件大约在200到8000行之间。

上传ZIP文件后,必须提取所有XML文件并将其显示给用户,因为用户需要手动编辑该文件并批准XML文件的内容,然后才能将其永久地移动和存储服务器。

从永久存储中,所有XML文件都将通过私有API调用返回给请求用户。

让我感到困惑的是数据应该存储在临时或永久存储中的方式,因为需要对XML文件中的内容进行编辑,排序,分页和搜索。

我正在探索众多选择,其中一些是。

  1. 使用MySql数据库存储数据
  2. 使用像Apache Lucene这样的全文搜索引擎来存储(这可能是个坏主意,但不确定)。
  3. 将其存储在永久目录中并直接读取/写入文件。
  4. 我想知道是否有人遇到类似的问题,或者采用这种情况的可行方法是什么?

    P.S:我正在使用Zend Framework和Doctrine进行应用程序开发。

1 个答案:

答案 0 :(得分:1)

如果数据不是以XML文件之外的任何其他方式使用(因此不需要查询或搜索所需的数据)而不是将数据保存在文件中将是最佳做法。将其存储在数据库中会增加不必要的开销,尤其是因为您不断在db和XML之间来回转换数据。

如果是这种情况,我会使用例如SimpleXML(http://php.net/manual/en/book.simplexml.php)编写一个包装器,它可以执行基本任务,例如循环遍历XML文件,保存行等。如果需要添加某种搜索功能你可以使用DOMXPath(http://www.php.net/manual/en/class.domxpath.php)添加一些很酷的东西。

另一方面,如果以其他方式需要数据(如API,查询搜索等),我会解析传入的XML文件并将它们存储在数据库中。

聚苯乙烯。我想补充一点,如果客户端不是100%清楚系统和功能的长期意图(只有你能以某种方式确定),我会选择数据库存储,尽管如果只使用XML格式会产生开销。如果所有内容都整齐地存储在数据库中,则添加诸如计算,搜索,合并数据等新功能不是问题。如果你有一个装满XML文件的驱动器,你可能需要重写很多代码。