Artur Panteleev Asked:2020-08-18 03:38:31 +0000 UTC2020-08-18 03:38:31 +0000 UTC 2020-08-18 03:38:31 +0000 UTC 解析大型 XML 文件的最佳方法是什么? 772 如您所知,在 PHP 中解析 XML 的方法有很多种。应该使用什么方法来解析一个巨大的文件,以免服务器掉线并以最大速度执行解析? php 2 个回答 Voted Best Answer Alex 2020-08-29T03:29:35Z2020-08-29T03:29:35Z 使用像 XMLReader 这样的流解析器。以最少的资源消耗工作得非常快。使用它的一个例子: <?php $reader = new XMLReader(); $reader->open("tooBig.xml"); while ($reader->read()) { switch ($reader->nodeType) { case (XMLREADER::ELEMENT): if ($reader->localName == "entry") { if ($reader->getAttribute("ID") == 5225) { while ($reader->read()) { if ($reader->nodeType == XMLREADER::ELEMENT) { if ($reader->localName == "title") { $reader->read(); echo $reader->value; break; } if ($reader->localName == "entry") { break; } } } } } } } ?> 您也可以使用 SAX 解析器,但使用起来更加困难…… XMLReader 示例取自此处,您还可以在此处查看 SAX 解析器示例。您还可以在此处查看示例 rqLizard 2020-08-18T04:08:56Z2020-08-18T04:08:56Z 对于非常大的文件,我建议使用xml_parser_create(). 使用它时,您可以实现非常低的内存消耗。但是在这种情况下,在解析期间,有必要将中间数据保存在某个地方(到文件或数据库)。
使用像 XMLReader 这样的流解析器。以最少的资源消耗工作得非常快。使用它的一个例子:
您也可以使用 SAX 解析器,但使用起来更加困难…… XMLReader 示例取自此处,您还可以在此处查看 SAX 解析器示例。您还可以在此处查看示例
对于非常大的文件,我建议使用
xml_parser_create(). 使用它时,您可以实现非常低的内存消耗。但是在这种情况下,在解析期间,有必要将中间数据保存在某个地方(到文件或数据库)。