我需要解析大小为40GB的XML文件,然后进行规范化,然后插入到MySQL数据库中。我尚不清楚需要在数据库中存储多少文件,我也不知道XML结构。
我应该使用哪个解析器,您将如何进行呢?
在PHP中,您可以使用XMLReader Docs 读取超大型XML文件:
XMLReader
$reader = new XMLReader(); $reader->open($xmlfile);
特大XML文件应以压缩格式存储在磁盘上。至少这是有道理的,因为XML文件具有很高的压缩率。例如,像gzip一样large.xml.gz。
large.xml.gz
PHP XMLReader通过压缩包装器 Docs 很好地支持了这一点:
$xmlfile = 'compress.zlib://path/to/large.xml.gz'; $reader = new XMLReader(); $reader->open($xmlfile);
将XMLReader允许您将当前元素“唯一”上运行。这意味着它仅向前。如果需要保持解析器状态,则需要自己构建它。
我经常发现将基本动作包装到一组迭代器中很有帮助,这些迭代器知道如何XMLReader像仅通过元素或子元素进行迭代那样进行操作。您可以在使用PHP和XMLReader解析XML中找到概述。
另请参阅: