问题:
SimpleXML 无法处理的大型 XML 文件,我正在探索 XMLReader,但缺乏有关如何在数据库中存储元素内容的指导。您能提供对此过程的见解吗?
答案:
该方法取决于您的工作单元的规模,特别是如果您正在处理单个 ;节点连续。以下是结合 XMLReader 和 SimpleXML 的策略:
$z = new XMLReader; $z->open('data.xml'); $doc = new DOMDocument; // Move to the first <product> node while ($z->read() && $z->name !== 'product'); // Iterate through <product> nodes until the end of the tree while ($z->name === 'product') { // Either read outer XML as a string and import it as SimpleXML or import the node as DOM $node = new SimpleXMLElement($z->readOuterXML()); // $node = simplexml_import_dom($doc->importNode($z->expand(), true)); // Now you can access node content var_dump($node->element_1); // Move to the next <product> node $z->next('product'); }
不同方法的优缺点:
建议:
从 SimpleXML 开始评估性能。如果速度至关重要,请考虑 DOM。但是,必须最小化代码库以降低出现错误和性能问题的风险。
以上是如何在 PHP 中有效使用 XMLReader 将大型 XML 文件内容存储在数据库中?的详细内容。更多信息请关注PHP中文网其他相关文章!