Jump to content
Sign in to follow this  
Furian73

Dúvida - XML

Recommended Posts

Furian73

Boas, estou-me a iniciar em XML e deparei-me com um problema que não consigo resolver.

O objectivo é chamar as imagens dos diversos filmes mas quando tento testar o código no Internet Explorer ele diz que é necessário um objecto.

Penso estar a usar correctamente a mecânica dos Nodes.

Eis o código do XMLDOM:

<html>
<head>
	<title>Repositório de Filmes</title>
	<style type="text/css">

	</style>
	<script type="text/javascript">
		//CRIACAO DE 1 OBJECTO ACTIVE X(MICROSOFT)
			var oax=new ActiveXObject("Microsoft.XMLDOM");
			oax=new ActiveXObject("Microsoft.XMLDOM");
	  //TORNAR OS 1 OBJECTO SINCRONO
  				oax.async= false; 
	  //CARREGAR O  OBJECTO ACTIVE X 
			oax.load("../XMLDOM/repositorio.xml");
	</script>
</head>
<body>
	<script type="text/javascript">

	  //ESPECIFICAÇÃO DAS VARIAVEIS
	var  no_repositorio,listaFilme,numFilme,i;
			no_repositorio=oax.documentElement;
			listaFilme=no_repositorio.childNodes;
			numFilme=listaFilme.length;


	  //FUNCAO QUE MOSTRA OS FILMES

		for (i=0;i<numFilme;i++){
			document.write=('<img src="../XMLDOM/'+listaFilme[i].childNodes[1].attributes[0].text+'"/>') ;
		}



	</script>
	</body>
</head>

<body>
</body>
</html>

O erro encontra-se na linha que diz: listaFilme=no_repositorio.childNodes;

Aqui está uma amostra da biblioteca XML para puderem confirmar se realmente estou a aplicar os childNodes como dever ser:

<?xml version="1.0" encoding="ISO-8859-1"?>

<repositorio>
<filme>
	<titulo>Piratas das Caraíbas por Estranhas Marés</titulo>

	<capa imagem="f01.jpg" />

	<conteudo>Acção | Aventura | Fantasia</conteudo>

	<ficha> 
	        <director>Rob Marshall</director>
		<escritor>Ted Elliott 
			  Terry Rossio
		</escritor>
		<elenco>Johnny Depp	 ...	Jack Sparrow
			Penélope Cruz	 ...	Angelica Malon
			Geoffrey Rush	 ...	Barbossa
			Ian McShane	 ...	Blackbeard
			Kevin McNally	 ...	Gibbs
			Sam Claflin	 ...	Philip
			Astrid Berges-Frisbey	 ...	Syrena
			Stephen Graham	 ...	Scrum
			Keith Richards	 ...	Captain Teague
			Richard Griffiths	 ...	King George
			Greg Ellis	 ...	Groves
			Damian O'Hare	 ...	Gillette
			Óscar Jaenada	 ...	The Spaniard
			Anton Lesser	 ...	Lord John Carteret
			Roger Allam	 ...	Prime Minister Henry Pelham
		</elenco>

	</ficha>

	<descricao>Jack Sparrow e Barbossa embarquem numa viagem para encontrar 
		   a fonte da juventude, apenas para descobrir 
		   que Barba-negra e a filha também estão a sua procura.</descricao>

	<links><url1>http://www.imdb.com/title/tt1298650/</url1>
	       <url2>href="url">http://www.trailers.com.pt/bridesmaids/</url2>
	</links>

</filme>
</repositorio>

Cumprimentos,

Share this post


Link to post
Share on other sites
dennis3380

estive a rever o teu código e tinhas alguns erros, com este codigo ja funciona:

ficheiro xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<repositorio>
        <filme>
                <titulo>Piratas das Caraíbas por Estranhas Marés</titulo>
               
                <capa>img01.jpg</capa>
               
                <conteudo>Acção | Aventura | Fantasia</conteudo>
               
                <ficha>
                        <director>Rob Marshall</director>
                        <escritor>Ted Elliott
                                  Terry Rossio
                        </escritor>
                        <elenco>Johnny Depp         ...        Jack Sparrow
                                Penélope Cruz         ...        Angelica Malon
                                Geoffrey Rush         ...        Barbossa
                                Ian McShane         ...        Blackbeard
                                Kevin McNally         ...        Gibbs
                                Sam Claflin         ...        Philip
                                Astrid Berges-Frisbey         ...        Syrena
                                Stephen Graham         ...        Scrum
                                Keith Richards         ...        Captain Teague
                                Richard Griffiths         ...        King George
                                Greg Ellis         ...        Groves
                                Damian O'Hare         ...        Gillette
                                Óscar Jaenada         ...        The Spaniard
                                Anton Lesser         ...        Lord John Carteret
                                Roger Allam         ...        Prime Minister Henry Pelham
                        </elenco>
               
                </ficha>
               
                <descricao>Jack Sparrow e Barbossa embarquem numa viagem para encontrar
                           a fonte da juventude, apenas para descobrir
                           que Barba-negra e a filha também estão a sua procura.</descricao>
               
                <links><url1>http://www.imdb.com/title/tt1298650/</url1>
                       <url2>href="url">http://www.trailers.com.pt/bridesmaids/</url2>
                </links>
               
        </filme>
	<filme>
                <titulo>Rambo</titulo>
               
                <capa>img02.jpg</capa>
               
                <conteudo>Acção | Aventura | Fantasia</conteudo>
               
                <ficha>
                        <director>Rob </director>
                        <escritor>Ted 
                                  Terry 
                        </escritor>
                        <elenco>Johnny Depp         ...        Jack Sparrow
                                Penélope Cruz         ...        Angelica Malon
                                Geoffrey Rush         ...        Barbossa
                                Ian McShane         ...        Blackbeard
                                Kevin McNally         ...        Gibbs
                                Sam Claflin         ...        Philip
                                Astrid Berges-Frisbey         ...        Syrena
                                Stephen Graham         ...        Scrum
                                Keith Richards         ...        Captain Teague
                                Richard Griffiths         ...        King George
                                Greg Ellis         ...        Groves
                                Damian O'Hare         ...        Gillette
                                Óscar Jaenada         ...        The Spaniard
                                Anton Lesser         ...        Lord John Carteret
                                Roger Allam         ...        Prime Minister Henry Pelham
                        </elenco>
               
                </ficha>
               
                <descricao>Jack Sparrow e Barbossa embarquem numa viagem para encontrar
                           a fonte da juventude, apenas para descobrir
                           que Barba-negra e a filha também estão a sua procura.</descricao>
               
                <links><url1>http://www.imdb.com/title/tt1298650/</url1>
                       <url2>href="url">http://www.trailers.com.pt/bridesmaids/</url2>
                </links>
               
        </filme>
</repositorio>

ficheiro html:

<html>
        <head>
                <title>Repositório de Filmes</title>
                <style type="text/css">
                       
                </style>
                <script type="text/javascript">
			function loadXMLDoc(file){
                    if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET",file,false);
xmlhttp.send();
return xmlhttp.responseXML; 
}

function movies(){
       xmlDoc=loadXMLDoc('ficheiro.xml');
   
                  //ESPECIFICAÇÃO DAS VARIAVEIS
			filme = xmlDoc.getElementsByTagName('filme');
                titulo = xmlDoc.getElementsByTagName('titulo');
			conteudo = xmlDoc.getElementsByTagName('conteudo');
			capa = xmlDoc.getElementsByTagName('capa');
			director = xmlDoc.getElementsByTagName('director');
			escritor = xmlDoc.getElementsByTagName('escritor');
			elenco = xmlDoc.getElementsByTagName('elenco');
			descricao = xmlDoc.getElementsByTagName('descricao');

                  //FUNCAO QUE MOSTRA OS FILMES
                               
                        for (i=0;i<filme.length;i++){
                             document.write('<p><b>'+titulo[i].childNodes[0].nodeValue+'</b><br />');
						 document.write("<img src='URL ou PATH para a imagem"+capa[i].childNodes[0].nodeValue+"'"+'<br />');
						 document.write(conteudo[i].childNodes[0].nodeValue+'<br />');
						 document.write("<b>Director: </b>"+director[i].childNodes[0].nodeValue+'<br />');
						 document.write("<b>Escritor: </b>"+escritor[i].childNodes[0].nodeValue+'<br />');
						 document.write("<b>Elenco: </b>"+elenco[i].childNodes[0].nodeValue+'<br />');
						 document.write("<b>Descrição: </b>"+descricao[i].childNodes[0].nodeValue+'<br />');

                        }                                                  
                 }              
                </script>

</head>

<body>

<input type="button" value="mostrar filmes" onclick="movies()"/>
        </body>
</html>

ainda podes melhorar algumas coisas no codigo, como por exemplo, ir buscar as capas directamente ao imdb se quiseres, ou melhorar um pouco mais a apresentação ao user. ;)

Share this post


Link to post
Share on other sites
KTachyon

Se toda a gente que tiver uma dúvida de XML escrever um tópico no fórum com um título como o teu, todos os tópicos teriam um título igual.

Para além disso, deves utilizar as tags de código com a linguagem associada, por exemplo [ code=XML ][ /code ] (sem espaços).


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.