【发布时间】:2014-12-18 08:27:48
【问题描述】:
我有以下代码,它正在解析 xml 文件并根据另一个子值提取子信息。 代码运行良好,但我的 xml 文件超过 200mb,当我尝试解析并获取多个数据时,该网站在大约 4 分钟或更长时间内加载:(
$dom = new DOMDocument();
$xpath = new DOMXPath($dom);
$reader = new XMLReader();
$reader->open('http://www.bookingassist.ro/test/HotelsPro.xml');
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Hotel') {
$node = $dom->importNode($reader->expand(), true);
$dom->appendChild($node);
$h1name = $xpath->evaluate('string(/Hotel[HotelCode = "'.$hotelCodes[0].'"]/HotelName)', $node);
$dom->removeChild($node);
if ($h1name) {
$reader->close();
break;
}
}
}
如何解析此文档以更快地检索数据。正如我在互联网上搜索的那样,SAX 会做这件事,但我不知道如何使用它。 感谢您的宝贵时间。
【问题讨论】:
-
该示例不是 SAX,它使用 XMLReader 和 DOM - 不同的 API