什么是最快的解析和解决方法?在PHP中查询大型XML文件?

时间:2015-01-05 08:07:33

标签: php xml parsing xmlreader

解析和解决问题的最快方法是什么?在PHP中查询大型XML文件? 我有一个200 mb的文件。 而我正在尝试解析&当给出来自同一树的另一信息时查询某个值。 我使用以下代码来执行此操作:

$dom    = new DOMDocument();
$xpath  = new DOMXPath($dom);
$reader = new XMLReader();
$reader->open('file.xml');

while ($reader->read()) {
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Hotel') {
        $node = $dom->importNode($reader->expand(), true);
        $dom->appendChild($node);
        $result = $xpath->evaluate('string(self::Hotel[HotelCode = "'.$hotelCodes[0].'"]/HotelImages/ImageURL[1])', $node);
        $dom->removeChild($node);
        if ($result) {
            echo $result;

        }
    }
}

XML结构是:

<?xml version="1.0" encoding="UTF-8" ?> 
- <XMLResponse>
    <ResponseType>HotelListResponse</ResponseType> 
  - <RequestInfo>
      <AffiliateCode>XX0000</AffiliateCode> 
      <AffRequestId>XXX</AffRequestId> 
      <AffRequestTime>yyyy-mm-ddThh:mm:ss</AffRequestTime> 
    </RequestInfo>
    <TotalNumber>XXXXX</TotalNumber> 
  - <Hotels>
    - <Hotel>
        <HotelCode>XXXXXX</HotelCode>
        <OldHotelId>X/XXXXXXXX</OldHotelId> 
        <DestinationId>XXXX</DestinationId> 
        <Destination>Name of city</Destination> 
        <Country>Name of country</Country> 
        <HotelName>Hotel Name</HotelName> 
        <StarRating>x</StarRating> 
        <HotelAddress>Hotel address</HotelAddress>
        <HotelPostalCode>Zip Code</HotelPostalCode>
        <HotelPhoneNumber>Hotel phone number</HotelPhoneNumber> 
        <HotelArea>Hotel area</HotelArea>
        <Chain>Hotel Chain</Chain> 
      - <Coordinates>
          <Latitude>latitude</Latitude> 
          <Longitude>longitude</Longitude> 
        </Coordinates>
      - <HotelImages>
          <ImageURL>URL1</ImageURL> 
          <ImageURL>URL2</ImageURL> 
          <ImageURL>URL3</ImageURL> 
        </HotelImages>
      </Hotel>
  - <Hotel>
    ....
    </Hotel>
  ....
  </Hotels>
</XMLResponse>

它正在运行,但在我的网站中检索数据需要很多。

有没有更快的解决方案来做我需要的?或者将XML文件转换为SQL文件的方法。?

由于

0 个答案:

没有答案