Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con java

Estas en el tema de Problema con java en el foro de Java en Foros del Web. Hola, tengo una pequeña duda. Tengo un programa que lee un documento XML, del que extrae ciertos datos que tendrá que tratar después. Pero no ...
  #1 (permalink)  
Antiguo 18/06/2009, 10:17
 
Fecha de Ingreso: julio-2008
Mensajes: 47
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema con java

Hola,

tengo una pequeña duda. Tengo un programa que lee un documento XML, del que extrae ciertos datos que tendrá que tratar después. Pero no todos los datos se tratan del mismo modo, sino que dependen de un identificador, de forma que si el id = 1, 5, 9,... hace una cosa y si es id = 2, 6, 10,... hará otra. Y lo mismo con id = 3, 7, 11,... o id = 4, 8, 12,... Mi duda es como hacer esto, es decir, como distinguir dicho id para decirle lo que debe hacer con esos datos.

Por si fuera de ayuda para comprender el problema, os pongo el código del programa. De momento lo único que sé hacer es distinguir entre id = 1, 2, 3 y 4, pero no seguir con la serie.

if (id == 1 ) {

pot1 = pr - pt;
//System.out.println(pot);
di = Math.sqrt((cuadrado(posX - x1)) + (cuadrado(posY - y1)));
logaritmo = Math.log(di/d1)/Math.log(10);
coef1 = -10 * logaritmo;

}

if (id == 2) {

pot2 = pr - pt;
di = Math.sqrt((cuadrado(posX - x2)) + (cuadrado(posY - y2)));
logaritmo = Math.log(di/d2)/Math.log(10);
coef2 = -10 * logaritmo;

}

if (id == 3) {

pot3 = pr - pt;
di = Math.sqrt((cuadrado(posX - x3)) + (cuadrado(posY - y3)));
logaritmo = Math.log(di/d3)/Math.log(10);
coef3 = -10 * logaritmo;

}

if (id == 4) {

pot4 = pr - pt;
di = Math.sqrt((cuadrado(posX - x4)) + (cuadrado(posY - y4)));
logaritmo = Math.log(di/d4)/Math.log(10);
coef4 = -10 * logaritmo;

}


Muchas gracias por todo y un saludo,


Paloma
  #2 (permalink)  
Antiguo 18/06/2009, 10:26
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Problema con java

Código PHP:
switch(id)
{
    case 
1:
    case 
5:
    case 
9:
        
//instrucciones
        
break;
    case 
2:
    case 
6:
    case 
10:
        
//instrucciones
        
break;
    .....

  #3 (permalink)  
Antiguo 18/06/2009, 10:37
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Problema con java

Para procesar xml a través de Java pueden serte muy utiles unas librerias que te puedes bajar desde apache.org

Existen dos modos de procesar ficheros xml a través de estas librerías: el modo SAX y el modo DOM.

Yo te recomendaría que te miraras la documentación disponible y que hicieses uso de ellas. Te será más cómodo y te ahorrarás un montón de trabajo.

Un saludo,
  #4 (permalink)  
Antiguo 19/06/2009, 15:27
 
Fecha de Ingreso: junio-2009
Ubicación: Mexico DF
Mensajes: 26
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Problema con java

Que tal, para procesar documentos XML, yo te recomiendo usar la libreria xstream-1.2.1.jar (creo es la ultima versión), un googlazo y la encuentras en la primera posicion de la busqueda. Saludos!!
  #5 (permalink)  
Antiguo 19/06/2009, 19:05
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Problema con java

pero su problema no esta al leer el XML, segun yo entendi ya tiene los datos en variables, entonces lo que no sabia era como darle un comportamiento a su programa dependiendo de este, ese es mi parecer, de todas formas si tienes problemas con los XML las opciones q te dan son muy buenas
  #6 (permalink)  
Antiguo 22/06/2009, 09:42
 
Fecha de Ingreso: julio-2008
Mensajes: 47
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con java

Hola,

muchísimas gracias a todos por vuestras respuestas. Como dice drac94, no tengo ningún problema al leer el XML, pues lo hago perfectamente. Mi problema está en operar después con la información que obtengo del mismo, de la que ésta es un ejemplo:

Datos: 1 uid: 00:l6:p3:65; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 1; pr: -30.0; posX: 50.0; posY: 250.0; tiempo: 20090618173725
Datos: 2 uid: 00:l6:p3:65; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 2; pr: -50.0; posX: 50.0; posY: 250.0; tiempo: 20090618173725
Datos: 3 uid: 00:l6:p3:65; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 3; pr: -26.0; posX: 50.0; posY: 250.0; tiempo: 20090618173725
Datos: 4 uid: 00:l6:p3:65; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 4; pr: -62.0; posX: 50.0; posY: 250.0; tiempo: 20090618173725
Datos: 5 uid: p8:56:kj:2m; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 1; pr: -65.0; posX: 100.0; posY: 150.0; tiempo: 20090505165415
Datos: 6 uid: p8:56:kj:2m; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 2; pr: -51.0; posX: 100.0; posY: 150.0; tiempo: 20090505165415
Datos: 7 uid: p8:56:kj:2m; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 3; pr: -40.0; posX: 100.0; posY: 150.0; tiempo: 20090505165415
Datos: 8 uid: p8:56:kj:2m; pda_mac: 255.623.489.251; id_dispositivo: 1; id_sensor: 4; pr: -45.0; posX: 100.0; posY: 150.0; tiempo: 20090505165415


Esta información se obtiene de una base de datos que almacena potencias y posiciones, con las que yo después debo resolver un sistema de ecuaciones. Pero soy incapaz de plantearlo, pues sólo consigo que me saque los cuatro últimos valores, aunque aquí tengo 8 y podría tener más.

El código que estoy utilizando es el siguiente:

public void parsearDocumento() {

Element docEle = dom.getDocumentElement();
NodeList nl = docEle.getElementsByTagName("dato");

if (nl != null && nl.getLength()>0) {

for (int i = 0; i<nl.getLength();i++) {

Element elemento = (Element)nl.item(i);
Datos dato = obtenerDato (elemento);
listadoDatos.add(dato);

}
}
}


public Datos obtenerDato(Element elemento) {

id = Integer.parseInt(elemento.getAttribute("id"));
uid = obtenerTexto(elemento, "uid");
pda_mac = obtenerTexto(elemento, "pda_mac");
id_dispositivo = obtenerEntero(elemento, "id_dispositivo");
id_sensor = obtenerEntero(elemento, "id_sensor");
pr = obtenerDoble(elemento, "pr");
posX = obtenerDoble(elemento, "posX");
posY = obtenerDoble(elemento, "posY");
tiempo = obtenerTexto(elemento, "tiempo");

d1 = Math.sqrt((cuadrado(x1)) + (cuadrado(y1)));
d2 = Math.sqrt((cuadrado(x2)) + (cuadrado(y2)));
d3 = Math.sqrt((cuadrado(x3)) + (cuadrado(y3)));
d4 = Math.sqrt((cuadrado(x4)) + (cuadrado(y4)));

//Aquí va el código del mensaje inicial

double[][] b1={{pot1},{pot2},{pot3},{pot4}};
b = new Matrix(b1);

double[][] a1={{1.,coef1}, {1.,coef2},{1.,coef3},{1.,coef4}};
A = new Matrix(a1);

//Crear un objeto Datos con los datos recibidos
Datos d = new Datos(id, uid, pda_mac, id_dispositivo, id_sensor, pr, posX, posY, tiempo);
return d;

}


Lo que necesito ahora es modificarlo de forma que pueda resolver sistemas con más de 4 ecuaciones. ¿Alguna idea de cómo podría hacerlo?

Muchas gracias por todo y disculpad las molestias.

Un saludo,


Paloma

Última edición por palomarp; 22/06/2009 a las 10:37
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:28.