0

I working on a XML parse script. The XML has more than 12.000 pieces items ("term" the element name) but the script gives only 4489 pieces element. Here my code:

<?php    
    $doc = new DOMDocument();
    $doc->preserveWhiteSpace = false;
    $doc->load('theXML.xml');
    $i=0;

            while(is_object($ajanlatok = $doc->getElementsByTagName("term")->item($i)))
            {
                     foreach($ajanlatok->childNodes as $nodename)
                     { echo $i;
                             if($nodename->nodeName=='dep')
                                {
                                    echo "<u>Indulás</u><br> Innen: ".$nodename->getAttribute('from')." - Ide: ".$nodename->getAttribute('to')." - Dátum: ".$nodename->getAttribute('date')."<br>";
                                }
                             elseif($nodename->nodeName=='prices')
                                {
                                     foreach($nodename->childNodes as $subNodes)
                                     {
                                     echo $subNodes->nodeName."(ár) - ".$subNodes->nodeValue."<br>";
                                     }
                                }
                             elseif($nodename->nodeName=='surcharges')
                                {
                                     foreach($nodename->childNodes as $subNodes)
                                     {
                                     echo $subNodes->nodeName."(felár) - ".$subNodes->nodeValue."<br>";
                                     }
                                }
                             elseif($nodename->nodeName=='rooms')
                                {
                                     foreach($nodename->childNodes as $subNodes)
                                     {
                                     echo $subNodes->nodeName."(szoba) - ".$subNodes->nodeValue."<br>";
                                     }
                                }

                             else
                                {
                                echo $nodename->nodeName." - ".$nodename->nodeValue."<br>";
                                }
                     }
                echo "<hr>";
    $i++;
            }
?>

Is there any limitation or why I don't get all the content. The XML file large, 70mb.

  • 2
    You may be better off using XMLReader for large files, have a look at https://stackoverflow.com/questions/1835177/how-to-use-xmlreader-in-php which may help. – Nigel Ren Dec 19 '17 at 20:49
  • 2
    "Is there PHP built-in foreach limt" =no (well only memory) –  Dec 19 '17 at 20:51
  • 1
    Try this: `$doc->load('theXML.xml', LIBXML_PARSEHUGE);` https://stackoverflow.com/questions/9080657/cant-read-large-xml-file-from-php – odan Dec 19 '17 at 22:03
  • Does your error log shows something? It feels like a memory limit thing, there are a couple of parameters on php.ini – Marcelo Staudt Dec 20 '17 at 00:23

0 Answers0