Ir para conteúdo

Arquivado

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

Gabriel Jacinto

Validando XML

Recommended Posts

Estou usando a API do last.fm.

Se entrar aqui, verá um XML: http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=eeef0f86a594fa8f86e41f52738f9d60&artist=cher&track=belive

porém, se entrar aqui http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=eeef0f86a594fa8f86e41f52738f9d60&artist=cher&track=belive

haverá um erro, pois a música não existe.

Gostaria de verificar se a música existe ou não.

Caso exista, mostre os dados (isso já fiz), porém se retornar essa erro, não.

Como faço? Não sou muito experiente com XML no PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Primeiramente entrou nos dois links?

Bem, se sim, n primeiro verá que tudo ocorrerá bem, as informações da música retornarão no XML corretamente e talz.

No segundo, como busco por uma música inexistente, ocorrerá um erro no XML, correto?!

Quando vou pegar o resultado do XML com o PHP do primeiro link, tudo ocrre normalmente, sem erro algum, porém, quando vou pegar o resultado o segundo, com o PHP, há um erro no PHP. Gostaria de verificar se há algum erro antes de dar o resultado.

 

Tipo:

var link2 (o com erro)

 

if( !link2 ){

return ERROR;

}else{

return informacoesDaMusica;

}

 

Não sei se deu pra intender, mas é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os dois links que você postou são idênticos...

 

Eu fiz uma alteração qualquer só para gerar um erro e retornou:

<lfm status="failed">
<error code="6">Track not found</error>
</lfm>

 

Na versão correta do link, o valor do atributo status é "ok". Então basta verificar isso. E se for "failed", verificar qual o tipo de erro para poder informar o usuário o motivo.

 

 

Bom, PHP tem várias bibliotecas para manipulação de XML: DOM XML, libxml, SimpleXML, XMLReader, etc. Qual biblioteca XML você está usando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade eu uso o simplexml_load_file mesmo. Mas já que dá pra fazer isso com DOM, vou mudar meu código. A, me pra me mostrar como fazer isso com o DOM?

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

 

$url = 'http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=eeef0f86a594fa8f86e41f52738f9d60&artist=cher&track=belive';

 

$ch = curl_init( $url );

curl_setopt( $ch, CURLOPT_HEADER, false );

curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );

$xml = curl_exec( $ch );

curl_close( $ch );

 

$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );

$DOMDocument->preserveWhiteSpace = false;

$DOMDocument->loadXML( $xml );

 

$status = $DOMDocument->getElementsByTagName( 'lfm' )->item( 0 )->getAttribute( 'status' );

 

if( $status == 'ok' )

{

// code here

}

 

?>

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.