StefanRSA Posted September 5, 2013 Share Posted September 5, 2013 (edited) I need to import a large XML file into my DB (2Gb)I tried to use DOMDocument and it failed cause of size and read up and understand that I should rather use XMLReader. Google search do not help much to give me an indication what I should different to read the document with XMLReader...Can anybody please help me to either point me in the right direction to fix this document I created or even help me to rewrite the parser... I just cannot get my head arounf this problem... My DOMDocument is as follow: #!/usr/bin/php –q <? error_reporting(E_ALL); ini_set('display_errors', '1'); $l = mysql_connect ( XXXXX); $total='0'; $xml = "http://xxxxxxxxxxxxxxxxxxxx"; $doc = new DOMDocument(); $doc->load( $xml); ## lets read the code block $records = $doc->getElementsByTagName( "Property" ); foreach( $records as $result ) { $adnr = $result->getElementsByTagName( "ID" ); // adnr $adnr = $adnr->item(0)->nodeValue; $town = $town->getElementsByTagName( "town" ); // town $town = $town->item(0)->nodeValue; //////////////////////////////////////////////////////////////////////////////// Add Pics $pic1= $result->getElementsByTagName( "image" ); $pic1 = $pic1->item('1')->nodeValue; $pic2= $result->getElementsByTagName( "image" ); $pic2 = $pic2->item('2')->nodeValue; $pic3= $result->getElementsByTagName( "image" ); $pic3 = $pic3->item('3')->nodeValue; } ?> Edited September 5, 2013 by StefanRSA Quote Link to comment Share on other sites More sharing options...
StefanRSA Posted September 5, 2013 Author Share Posted September 5, 2013 I am trying the XMLReader as follow: (This is not working... Any help?) #!/usr/bin/php –q <? error_reporting(E_ALL); ini_set('display_errors', '1'); $url='http://xxxxxxx.xxx'; $reader = new XMLReader(); $reader->open($url); while($reader->read()){ if($reader->nodeType == XMLReader::ELEMENT) $nodeName = $reader->name; if($reader->nodeType == XMLReader::TEXT || $reader->nodeType == XMLReader::CDATA) { if ($nodeName == 'ID'){ $adnr = $reader->value; echo $adnr.'<br>'; } if ($nodeName == 'Country'){ $country= $reader->value; } if ($nodeName == 'Location1'){ $province = $reader->value; } if ($nodeName == 'Location2'){ $region = $reader->value; } if ($nodeName == 'Location3'){ $town = $reader->value; } if ($nodeName == 'Price'){ $price =$reader->getAttribute('4'); echo 'Price='.$price.'/n/n'; } if ($nodeName == 'Beds'){ $bedrooms = $reader->value; } if ($nodeName == 'Ref'){ $ref = $reader->value; } if ($nodeName == 'Name'){ $bname = $reader->value; } if ($nodeName == 'Sector'){ $sector = $reader->value; $sector=trim(preg_replace('/\s+/', ' ', $sector)); } if ($nodeName == 'Type'){ $type = $reader->value; $hometype = trim($type.' '.$sector); $hometype=trim(preg_replace('/\s+/', ' ', $hometype)); } if ($nodeName == 'Key_selling_points'){ $keyfield = $reader->value; } if ($nodeName == 'Baths'){ $bathrooms = $reader->value; } if ($nodeName == 'Full_Desc'){ $fullt = $reader->value; } if ($nodeName == 'image'){ $pic1 = $reader->getAttribute('1')->value; } if ($nodeName == 'image'){ $pic2 = $reader->getAttribute('2')->value; } if ($nodeName == 'image'){ $pic3 = $reader->getAttribute('3')->value; } if ($nodeName == 'image'){ $pic4 = $reader->getAttribute('4')->value; } if ($nodeName == 'image'){ $pic5 = $reader->getAttribute('5')->value; } if ($nodeName == 'image'){ $pic6 = $reader->getAttribute('6')->value; } ///////////////////////////////////////// } $count='0'; if($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == 'Property') { $count++; } } $reader->close(); echo $count; ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.