Pedro B 0 Denunciar post Postado Setembro 15, 2016 Boa tarde! estou precisando que esse script leia todos os XML's de certa pasta (são mais de 350.000). Gostaria de saber oque tenho que fazer pra fazer que ele leia todos. <?php //Ler Arquivos TESTE5.XML $doc = new DOMDocument(); //Nome do XML $doc->load( 'teste5.xml' ); //Entra dentro da Tabela "Emit" $books = $doc->getElementsByTagName( "emit" ); foreach( $books as $book ) { $nomes = $book->getElementsByTagName( "xNome" ); $nome = $nomes->item(0)->nodeValue; $nfants = $book->getElementsByTagName( "xFant" ); $nfant = $nfants->item(0)->nodeValue; $cnpjs = $book->getElementsByTagName( "CNPJ" ); $cnpj = $cnpjs->item(0)->nodeValue; $lugares = $book->getElementsByTagName( "xLgr" ); $lugar = $lugares->item(0)->nodeValue; $bairros = $book->getElementsByTagName( "xBairro" ); $bairro = $bairros->item(0)->nodeValue; $ceps = $book->getElementsByTagName( "CEP" ); $cep = $ceps->item(0)->nodeValue; //Entra dentro da Tabela "IDE" $books = $doc->getElementsByTagName( "ide" ); foreach( $books as $book ) { //Pegar Data da NFe $datesEmi = $book->getElementsByTagName( "dEmi" ); $emi = $datesEmi->item(0)->nodeValue; $nNOTAs = $book->getElementsByTagName( "nNF"); $nNOTA = $nNOTAs->item(0)->nodeValue; } //Mostra o conteudo das variaveis na tela: echo "-----------------------------------------------------------------------------------------ORIGEM----------------------------------------------------------------------------------------"; echo "<br>"; echo "<br>"; echo "<br>"; echo "<b>Numero da Nota:</b> $nNOTA"; echo "<br>"; echo "<b>Nome:</b> $nome"; echo "<br>"; echo "<b>Nome Fantasia:</b> $nfant"; echo "<br>"; echo "<b>CNPJ:</b> $cnpj"; echo "<br>"; echo "<b>Endereço:</b> $lugar"; echo "<br>"; echo "<b>Bairro:</b> $bairro"; echo "<br>"; echo "<b>CEP:</b> $cep"; echo "<br>"; echo "<b>Data de Emissão:</b> $emi"; } //Destinatario echo "<br>"; echo "<br>"; echo "<br>"; echo "----------------------------------------------------------------------------------DESTINATARIO----------------------------------------------------------------------------------"; echo "<br>"; echo "<br>"; echo "<br>"; $books = $doc->getElementsByTagName( "dest" ); foreach( $books as $book ) { $nomes2 = $book->getElementsByTagName( "xNome" ); $nome2 = $nomes2->item(0)->nodeValue; $cnpjs2 = $book->getElementsByTagName( "CNPJ" ); $cnpj2 = $cnpjs2->item(0)->nodeValue; $lugares2 = $book->getElementsByTagName( "xLgr" ); $lugar2 = $lugares2->item(0)->nodeValue; $bairros2 = $book->getElementsByTagName( "xBairro" ); $bairro2 = $bairros2->item(0)->nodeValue; } //Entrar dentro da tabela ICMSTot $books = $doc->getElementsByTagName( "ICMSTot" ); foreach( $books as $book ) { //Pegar Data da NFe $vNFs = $book->getElementsByTagName( "vNF" ); $vNF = $vNFs->item(0)->nodeValue; } echo "<b>Nome:</b> $nome2"; echo "<br>"; echo "<b>CNPJ:</b> $cnpj2"; echo "<br>"; echo "<b>Endereço:</b> $lugar"; echo "<br>"; echo "<b>Bairro:</b> $bairro"; echo "<br>"; echo "<b>CEP:</b> $cep"; echo "<br>"; echo "<b>Valor da NF R$:</b> $vNF"; //conexão com MySQL $servername = "localhost"; $username = "root"; $password = "xxxx"; $dbname = "xxxx"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "INSERT INTO J_Emit (nNF, Nome, Nome_Fant, CNPJ, Adress, Bairro, CEP, nEmit) VALUES ('$nNOTA', '$nome', '$nfant', '$cnpj', '$lugar', '$bairro', '$cep', '$emi')"; echo "<br>"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> eu só vi exemplos de como ler uma X quantidade de arquivos, seria possivel deixar isso ilimitado? Atenciosamente, Pedro. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 15, 2016 Existem diversas soluções, mas acho que a mais em conta é GlobIterator, pois você pode ler arquivos conforme um padrão. $iterator = new GlobIterator('caminho/ate/a/pasta/*.xml'); foreach ($iterator as $item) { echo $item; } Item será o nome do arquivo para interpretar. Compartilhar este post Link para o post Compartilhar em outros sites
Pedro B 0 Denunciar post Postado Setembro 15, 2016 Obrigado Gabriel! irei efetuar os testes. Compartilhar este post Link para o post Compartilhar em outros sites
gabrielfalieri 15 Denunciar post Postado Setembro 15, 2016 Tem uma função chamada simplexml_load_file(""), nativa do php, bem simples tambem Compartilhar este post Link para o post Compartilhar em outros sites