我需要解析40GB的XML文件的大小,然后恢复正常,并插入到一个MySQL数据库。 如何我需要在数据库中存储文件的多少是不明确的,我也不知道XML结构。
其中解析器我应该使用,你会怎么去这样做?
我需要解析40GB的XML文件的大小,然后恢复正常,并插入到一个MySQL数据库。 如何我需要在数据库中存储文件的多少是不明确的,我也不知道XML结构。
其中解析器我应该使用,你会怎么去这样做?
在PHP中,你可以与极端大的XML文件中读取XMLReader
文档 :
$reader = new XMLReader();
$reader->open($xmlfile);
至尊大XML文件应存放在磁盘上的压缩格式。 至少,这是有道理的XML文件具有高压缩比。 例如gzip压缩像large.xml.gz
。
PHP支持很好用XMLReader
通过压缩包装文档 :
$xmlfile = 'compress.zlib://path/to/large.xml.gz';
$reader = new XMLReader();
$reader->open($xmlfile);
该XMLReader
让你当前元素“唯一”上运行。 这意味着它是只进。 如果你需要保持解析器的状态,你需要建立你自己的。
我经常发现它有助于包裹基本动作为一组知道如何进行操作的迭代器XMLReader
想通过要素或独生子女元素进行迭代。 你会发现在这个概括解析XML与PHP和XMLReader的 。
见还有:
这将是很高兴知道你真正打算与XML做。 您解析它的方式取决于你需要进行处理,以及大小非常多。
如果这是一个一次性的任务,那么我已经在过去通过发现XML结构之前做别的事情开始。 我DTDGenerator(见saxon.sf.net)被用于此目的是很久以前写的,仍然没有工作,还有其他的工具,但现在我不知道他们是否做流处理这是一个先决条件在这里。
可以编写使用一个拉或推流解析器(SAX或StAX的)处理数据的应用程序。 多么容易,这是取决于你有多少处理做,你有多少国家要保持,你还没有告诉我们。 您也可以试试流XSLT处理,这是撒克逊-EE可用。