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)
Proyecto:
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
Actualizado 21-marzo-2013
continue reading