Busca em XML com PHP

Efetuando uma busca em um arquivo XML utilizando PHP5

Esse Post foi movido para :

http://clares.com.br/2008/12/04/busca-em-xml-com-php/

Desculpe pelo transtorno, aproveite para assinar o novo blog.

Marcado:, ,

19 pensamentos sobre “Busca em XML com PHP

  1. Paulo Afonso dezembro 4, 2008 às 4:44 pm

    Cara, muito bom seu post e seu blog tbm.
    Mas eu quero te fazer uma pergunta é uma dúvida minha.
    Cara eu tenho uma página que gera o xml, mas para gerar preciso passar alguns parametros.
    Dai fica a questão. Não consigo acessar esse XML sem antes passar paramêtros. Daí então não consigo somente usar essa função simplexml_load_file() pois dá a mensagem de erro: falta os paramêtros.
    Tem alguma idéia de como me ajudar??
    Valeu, Parabéns!

    • Rafael Clares dezembro 5, 2008 às 2:41 am

      Entedi Paulo, leia sobre o simplexml_import_dom e simplexml_load_string no php.net. Lá tem a solução que você precisa.

  2. Paulo dezembro 5, 2008 às 12:04 pm

    achei uma função em curl.
    Mas na hora de retornar veio como texto.
    Veio as informações todas juntas, não consegui associar o que é o que.
    Vou continuar tentando.

  3. Rafael Clares dezembro 5, 2008 às 12:07 pm

    Paulo, envia o arquivo que gera o XML no meu email (rafadinix@gmail.com), verei se posso te ajudar. Abraços

  4. Paulo dezembro 5, 2008 às 12:36 pm

    Ow nossa… eu criei um arquivo xml após o retorno e depois usei a função de ler… dai ficou mais facil.. pois eu estou manipulando o xml…
    mas valeu cara pela ajuda…
    tudo de bom
    feliz natal

  5. Rafael Clares dezembro 5, 2008 às 12:54 pm

    Ué Paulo, eu tinha te falado isso, passar seus parametros para gerar o xml, criar em arquivo, carregar, manipular, apagar xml e vc disse que não se tratava disso rs… Blz então…flw

  6. alvim fevereiro 5, 2010 às 12:50 am

    muito bom o script!tá de parabéns! só queria saber uma coisa, como faz pra deixar o fundo do menu transparente? pois notei que ele é sempre branco! vlw!

  7. Rodrigo Macoy dezembro 22, 2010 às 1:08 am

    Muito boa a sua pagina,consigo resolver e tirar duvidas que levaria horas de estudo pra solucionar parabéns mesmo pelo seu site

  8. valmir abril 13, 2011 às 4:25 pm

    Nossa muito bom este artigo, foi direto ao ponto e de maneira muito simples.

    obrigado pelo artigo, e tudo de bom e sucesso

  9. Élida M. maio 3, 2011 às 8:40 pm

    Boa tarde Rafael
    Sou iniciante em php e xml,
    Estou tentando criar um arquivo php que lê parâmetros de um arquivo xml, para em seguida utilizar os dados para conexão com um banco de dados.
    Basicamente, o arquivo XML contém 4 tags: nome do servidor, nome do banco, usuário, senha.
    O arquivo php inicia carregando o xml e buscando os dados em casa tag, à maneira como você descreveu no artigo.
    Porém a função simplexml_load_file não está lendo…
    Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity “config.xml”
    Pode me dar um auxílio?
    Muito obrigada!
    Élida

    • Rafael Clares maio 3, 2011 às 10:22 pm

      Élida, parece que não esta encontrando o arquivo no local indicado!
      Você pode verificar também se o nome do arquivo está em letras minúsculas como está chamando na função, lembre-se de que se for linux é case sensitive, letras maísculas e minúsculas são tratadas como arquivos diferentes.
      Mas primeiro de tudo tente o seguinte:
      crie um arquivo chamado php.ini com o conteudo “allow_url_fopen = On” sem aspas, sem tags php, apenas o texto e na primeira linha do arquivo e coloque no diretório da aplicação onde está o arquivo que deve ler o xml.

  10. Raphael Schubert agosto 30, 2011 às 5:08 pm

    cara… segue meu codigo…

    <?php
    $action = $_REQUEST["action"];
    	
    switch ($action){
    	
    	case 'search':
    		
    		$k = $_REQUEST["k"];
    		
    		if(file_exists('faq.xml')){
    			
    			$xml = simplexml_load_file('faq.xml');
    		}
    		
    		foreach($xml->xpath('//pergunta') as $pergunta){
    			$registro = simplexml_load_string($pergunta->asXML());
    			$busca = $registro->xpath("//cod[002]");
    			if($busca){
    				echo utf8_decode($pergunta->titulo);
    				echo utf8_decode("<br>");
    				echo utf8_decode($pergunta->resposta);
    				echo utf8_decode("<br><br>");
    			}
    		}		
    		
    	break;
    
    	default;	
    
    		if(file_exists('faq.xml')){
    			$xml = simplexml_load_file('faq.xml');
    		}
    		
    		foreach($xml->pergunta as $pergunta){
    			echo utf8_decode($pergunta->titulo);
    			echo utf8_decode("<br>");
    			echo utf8_decode($pergunta->resposta);
    			echo utf8_decode("<br><br>");
    		}
    		
    	break;
    }
    ?>

    mas não está pesquidando… por que será?

  11. Raphael Schubert agosto 30, 2011 às 5:16 pm

    Opa… arrumei… era so trocar esta linha:

    $busca = $registro->xpath("//cod[002]");

    Por esta:

    $busca = $registro->xpath("//cod[.=002]");

    Agora, estou com outro probleminha… como faço pra pesquisar parte do conteudo de uma tag xml… eu tenho em meu XML uma tag resposta dentro de uma tag pergunta… queria que o usuario pesquisasse parte da resposta e o sistema retornasse ela inteira.. mas ele so pesquisa a resposta exata inteira… e n parte dela…. alguem tem uma sugestao?

  12. lucas almeida outubro 11, 2012 às 2:05 pm

    Oi Rafael, muito bom o seu blog, venho acompanhando e estudando seus posts,

    nesse exemplo, se que eu quiser pesquisar no xml pelo título do livro, como faço ?

    $busca = $registro->xpath(‘//preco[.>55.00]‘);// aqui pesquisa livros com o preço maior que 55.00
    quero pesquisar o livro com o nome PHP para iniciantes.

  13. Guilherme Velloso outubro 27, 2012 às 10:22 pm

    Olá Rafael, como vai?
    Primeiro parabéns não só pelo post mas sim pelo site todo!! Muito show o conteúdo…
    Sou muito leigo no assunto e estou precisando criar uma pagina de “produtos” que exibe produtos de um xml externo, mas que exiba por exemplo 10 produtos de uma determinada categoria.

    Testei o seu código alterando as tags para a do meu xml mas ele retorna vários erros todos iguais…rs
    Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: Invalid predicate in C:\wamp\www\AulasPHP\xml.php on line 10

    Notei que quando eu mudo o valor de 55.00 para 55,00 que é a forma como meu xml exibe os valores ele da esses erros e quando coloco o ponto ele retorna a pagina em branco sem erros..rs

    Sabe me dizer o porque? Se precisar posso mandar a url do xml pra você por email…
    Abraços e mais uma vez parabéns!! Estou lendo todos os seus posts sobre XML

  14. Guilherme Velloso outubro 29, 2012 às 10:16 pm

    Sem problema Rafael, agradeço mesmo assim a resposta. ;)
    Abração

Os comentários estão desativados.