En este proyecto se utiliza la librería JDOM para leer los datos de un archivo XML desde java y
mostrarlos en pantalla, la librería JDOM nos permite manipular los datos XML fácilmente y cuenta con varios métodos que hacen nuestro trabajo mas agradable.
Que utilizamos:
- JDOM: JDOM es una biblioteca de código abierto para manipulaciones de datos XML optimizados para Java.
- JMF: Java Media Framework o JMF (en español entorno de trabajo multimedia de Java) es una extensión de Java que permite la programación de tareas multimedia en este lenguaje de programación.
- Netbeans 6.0
- XML: Extensible Markup Lenguage o Lenguaje de marcado extendible
- Un editor de texto para crear el archivo XML (Notepad por ejemplo)
El proyecto PlayListXML esta formado por un clase XMLpanel.java la cual se extiende de un JPanel, es aqui donde utilizamos la libreria JDOM para manipular el archivo XML, esta clase hace uso de la clase Song.java la cual es un JPanel donde se colocaran los datos leidos del playlist XML. ademas este proyecto tambien utiliza la libreia de JMF para reproducir los archivos MP3
El archivo XML que forma el playlist, tiene la siguiente estructura:
<?xml version="1.0" encoding="UTF-8"?> <playlist> <song id="1"> <titulo>TITULO</titulo> <artista>ARTISTA</artista> <album>ALBUM</album> <location>DIRECION DEL ARCHIVO MP3</location> <artLocation></artLocation> </song> </playlist>
Es un XML simple la cual esta formada por los elementos necesarios que puede tener un playlits, Titulo de la cancion, artista, album, direccion del archivo MP3 y un campo adicional donde se almacena la ruta de los Preview de los album, en este caso todos se encuentran dentro del JAR
El archivo XML con los datos de las canciones puede verse aqui abajo:
<?xml version="1.0" encoding="UTF-8"?> <playlist> <song id="1"> <titulo>Mi Cordura</titulo> <artista>La logia</artista> <album>Nacer para morir</album> <location>E:/mp3/Mi Cordura.mp3</location> <artLocation>/album/album3.jpg</artLocation> </song> <song id="2"> <titulo>Jamas la vi</titulo> <artista>La Logia</artista> <album>Morir para nacer</album> <location>e:/mp3/Jamas La Vi.mp3</location> <artLocation></artLocation> </song> <song id="3"> <titulo>Patria</titulo> <artista>La Logia</artista> <album>Escalofriante</album> <location>e:\mp3\00000000000Patria.mp3</location> <artLocation>/album/album5.jpg</artLocation> </song> <song id="4"> <titulo>La Vieja</titulo> <artista>Cordura</artista> <album>No tengo idea</album> <location>e:\mp3\08 - La Vieja.mp3</location> <artLocation>/album/album5.jpg</artLocation> </song> <song id="5"> <titulo>Knockin On heavens door</titulo> <artista>GUns and roses</artista> <album></album> <location>e:\mp3\007.-KNOCKIN ON HEAVEN.mp3</location> <artLocation>/album/album5.jpg</artLocation> </song> </playlist>
La clase encargada de manipular los archivos XML es XMLpanel.java:
package playlistxml; import java.awt.Dimension; import java.io.FileInputStream; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class XMLpanel extends javax.swing.JPanel { Dimension d = new Dimension(470,500); //constructor al cual se le pasa la direccion del archivo XML public XMLpanel(String pl){ int i=0; //añadimos un layout this.setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.Y_AXIS)); try { // Creamos el builder SAX SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new FileInputStream(pl)); // Obtenemos la etiqueta raÃz Element raiz = doc.getRootElement(); List <Element> hijosRaiz = raiz.getChildren(); //recorremos todos los hijos de la raiz for(Element hijo: hijosRaiz){ //creamos un nuevo objeto SONG this.add(new song()); //añadimos propiedades ((song)this.getComponent(i)).setTitulo(hijo.getChild("titulo").getValue()); ((song)this.getComponent(i)).setArtista(hijo.getChild("artista").getValue()); ((song)this.getComponent(i)).setAlbum(hijo.getChild("album").getValue()); ((song)this.getComponent(i)).setLocation(hijo.getChild("location").getValue()); ((song)this.getComponent(i)).setPreview(hijo.getChild("artLocation").getValue()); i++; }//fin hijos }catch (JDOMException ex) { Logger.getLogger(XMLpanel.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(XMLpanel.class.getName()).log(Level.SEVERE, null, ex); } //asignamos tamaño al panel deacuerdo d = new Dimension(410,(100*(i))); this.setSize(d); this.repaint(); } //sirve para obtener cual es el archivo mo3 seleccionado del playlist public String getSongSelecionado(){ String File=""; for(int i=0; i<this.getComponentCount();i++){ if(((song)this.getComponent(i)).getSeleccion()){ File = ((song)this.getComponent(i)).getLoaction(); break; } } return File; } }
Todo el proyecto esta comentado y es (creo) fácilmente entendible para un programador "intermedio", novatos abstenerse. se los dejo para su análisis y estoy mas que seguro que a mas de uno le servirá en su universidad, escuela , instituto o simplemente para conocer un poco mas de lo que puede ofrecer java.
Este es el resultado del proyecto
El proyecto completo hecho en Netbeans 6.0 junto con las librerías necesarias en el siguiente enlace
http://link.jc-mouse.net/?id=P14Y115TXM
Actualizado 21-marzo-2013
excelente
ResponderEliminarke tal amigo soy VDOAL, he estado checando tus posts pero no he tenido ningun resultado, en este post ya descargue tu trabajo, le agregue las librerias que necesita, al xml le pase la url dela cancion, corri el programa y nada paso, no me manda errores por k esta supuestamente bien, pero no reproduce el archivo, que propuesta me das para resolver el problema?
ResponderEliminarlo mismo paso con el reproductor mp3 sencillo, no reproduce ningun archivo mp3 que selecciono, tambien con el de los videos, ninguno me manda errores, pero no me reproducen nada
mi mail es vdoal1.0@gmail.com
hola amigo puedes subir de nuevo el archivo; el enlace de descarga del juego ya no esta
ResponderEliminarBuenas!!!
ResponderEliminarPodrías subir de nuevo el proyecto completo?? Es que no funciona el enlace de descarga. Me harías un gran favor pleaseeee!!!
Mil gracias, un saludo
gracias por el aviso, lo subire de inmediato
ResponderEliminar