Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kauan23

Varrer xml e extrair informações.

Recommended Posts

Galera estou tentando pegar uma informação específica de um array gerado a partir de um xml.

 

No método abaixo a minha dificuldade esta sendo ir entrando dentro dos arrays, eu quero que o método busque no array a informação nome, caso não encontre entre no proximo array e assim sucessivamente, a unica forma que encontrei de entrar no proximo array foi com o foreach.

Segue abaixo o código que fiz.

 

do{

foreach ($xmlArray as $xmlArray){
debug($xmlArray['nome']);
}

} while(array_search('@codsubcat', $xmlArray));

Compartilhar este post


Link para o post
Compartilhar em outros sites
$nome = '';
   foreach ($xmlArray as $xmlArray){
if(!empty($xmlArray['nome']))
{
$nome = $xmlArray['nome'];
break;
}
      }

echo 'O primeiro nome encontrado foi:'.$nome;

 

 

Obrigado pela rapidez em responder mas isso não resolve minha situação, estou colocando um link com o array que estou tentando varrer. Estou tentando fazer é o seguinte, um método que entra no primeiro nó do array e procura pela chave @codsubcat, caso encontre imprima o nome, caso contrario entre no próximo nó e procure novamente pela chave @codsubcat e assim sucessivamente ate encontrar.

 

 

link do array: https://www.dropbox.com/s/s08q3alcahq7wha/array.php?dl=0

Compartilhar este post


Link para o post
Compartilhar em outros sites

O algoritmo é exatamente esse meu caro.

 

Não quer que eu faça tudo tbm, é só você aplicar no seu contexto agora.

 

Mais uma vez parabéns por sua educação e por sua capacidade de leitura, primeiro se o problema fosse simples ou tivesse muito tempo para solucionar o problema não teria entrado no fórum, segundo se você tivesse lido e entendido meu problema saberia que o que você propôs não era o principal para solucionar meu problema pois já sabia fazer o que você propôs como sua solução.

De qualquer para futuros colegas que entrem neste tópico em busca da mesma solução ou ate mesmo para aprimorarem meu código, segue o que criei (não é o melhor mas resolveu minha situação):

public function sweep_array ($xmlArray){//RECEBE UM ARRAY SIMPLES OU MULTIDIMENSIONAL
   		if (is_array($xmlArray)){//VERIFICA SE É UM ARRAY, CASO SEJA ENTRA NO FOREACHE
   			foreach ($xmlArray as $xmlArrayStemOrBranch) {//ENTRA UM NÓ NO ARRAY
   				if(!empty($xmlArrayStemOrBranch['@codsubcat'])) {//VERIFICA SE A CHAVE '@codsubcat' EXISTE NESSE NÓ DO ARRAY.
   					debug($xmlArrayStemOrBranch['@codsubcat']." ".$xmlArrayStemOrBranch['nome']);//CASO EXISTA IMPRIME AS INFORMAÇÕES DO MEU INTERESSE
   				}else{
   					$this->sweep_array($xmlArrayStemOrBranch);//CASO CONTRÁRIO ENTRA MAIS UM NÓ E CONSULTA NOVAMENTE, ISSO ATÉ O FIM DE TODOS OS ARRAYS EXISTENTES.
   				}
   			}	
   		} else {
   			$this->Session->setFlash('Formatação do arquivo inválida.');//NÃO É UM ARRAY.
   		}
   	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.