Autor Zpráva
Pavel Dumbrovský
Profil
Dobrý den,
celý den hledám něco použitelného pro import z velkých XML do DB.
Našel jsem skript kde se kombinuje XMLreader a SimpleXML, ovšem potřeboval bych ho vylepšit tak, aby když nějaký element obsahuje další prvky, aby je to vypsalo taky (subtree).

$reader = new XMLReader();
                $reader->open('xml_feed_sklad_zaklad_cz.xml');
                while($reader->read())
                {
                
                        if($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'SHOPITEM')
                        { $counter++;
                                        $doc = new DOMDocument('1.0', 'UTF-8');
                                        $xml = simplexml_import_dom($doc->importNode($reader->expand(),true));
                                        echo "<p>".$counter." ".$xml->NAZEV; //or whatever 
                                   
                                   // tuto cast jsem pridelal sam s tim, ze tak nejak by to melo byt, ale neco je blbe, protoze jakmile to narazi na neprazdny element PRILOHY, tak uz to vypisuje pouze prilohy a nevrati se to do hlavniho cyklu.. 

                                     if(!$xml->isEmptyElement && $xml->PRILOHY)
                                      {
                                          while($reader->read())
                                          {
                                              if($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'PRILOHY')
                                              { $counter++;
                                                $doc2 = new DOMDocument('1.0', 'UTF-8');
                                                $xml2 = simplexml_import_dom($doc2->importNode($reader->expand(),true));
                                                echo "<p>&nbsp;&nbsp;".$counter." ".$xml2->PRILOHA_URL; //or whatever
                                              }                                                
                                          }                                                                                    
                                      }                                                                              
                                                                                                                                                                
                        }
                }

Nemělo by to být snad nic těžkého, pro mě je to ale celkem španělská.. Předem díky za pomoc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: