Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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.
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?
na verdade eu uso osimplexml_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?
<?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
}
?>
Pode me indicar um bom tutorial de como ler XML com DOM? Procurei muitos, mas não consigo achar. :/
Aqui tem um bom tutorial do colega Andrey Knupp Vital
:seta: DOMDocument - XML { PHP }, Parte - 1
:seta: DOMDocument - XML { PHP }, Parte - 2
:seta: DOMDocument - XML { PHP }, Parte - 3
Sua dúvida é confusa, seja mais claro.