En este proyecto se utiliza la librería JDOM para leer los datos de un archivo XML desde java y
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 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; } }
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







