Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Zeigon en 09 de Febrero de 2004, 11:42:20 PM

Título: Problema Con Java Y Jdom
Publicado por: Zeigon en 09 de Febrero de 2004, 11:42:20 PM
 vamos a ver, yo tengo este codigo q lo q pretende hacer es recibir el texto de una caja en la q se escribe el nombre de una sección de un perdiodico en un XML y comprobar si esa sección ya existe en el XML pa no volver a crearla, claro ta:


/*Recibe el Element Root en un principio y luego con las recursivas llamadas pues los hijos de cada Element, recorriendo así todo el árbol; y también recibe el nombre de la sección a comprobar*/

public boolean checkSection(Element elemento, String nombre)
{
   //Comprueba si ya existe la seccion

   List children = elemento.getChildren();
   Iterator iterator = children.iterator();
 
   while (iterator.hasNext())
   {
       Element child = (Element) iterator.next();
             
       if (child.getName() == "NOMBRE" && child.getText() == nombre)
       {
               return true; //Si existe la seccion se pira
       }
       
       checkSection(child, nombre);
   }
   
   return false; //Si no existe, pues eso, devuelve false

   //Fin comprobación
}



el problema es q trás hacer mil comprobaciones, no se pq no entra en el IF de comprobar nombre de sección, es decir, si lo pongo en 2 Ifs, el 1º q vea si la etiqueta es nombre y su texto es variable nombre, pues en el priemro si entra pq detecta la etiqueta, pero NO pilla luego el texto de la etiqueta. HE comprobado si se recibía el texto (que sí), si ambos texto, child.getText() y variable nombre, eran iguales o tenían espacios, pero no, son exactamente iguales pero por alguna extraña razón no entra en ese IF por lo q no comprueba nombres, por lo que las secciones siempre las toma como inexistentes, por lo q me jode todo  (nooo)


plis una ayudita con este problemita  (ole)  
Título: Problema Con Java Y Jdom
Publicado por: sés en 10 de Febrero de 2004, 10:20:02 AM
 La "extraña" razón es que en Java no puedes comparar cadenas de esa forma (cadena1 == cadena2).

Tienes que usar el método equals() de la clase String.

Cambia el el if por este:
if( child.getName().equals( "NOMBRE" ) && child.getText().equals( nombre) )
Y, si no quieres diferenciar mayúsculas y minúsculas:
if( child.getName().equalsIgnoreCase( "NOMBRE" ) && child.getText().equalsIgnoreCase( nombre) )
Título: Problema Con Java Y Jdom
Publicado por: Zeigon en 10 de Febrero de 2004, 04:52:27 PM
 pues gracias pq ya me estaba volviendo loco. es q esto de q Java sea tan parecido a C no va bien :P  se usan métodos para todo  :)

lo del ignorecase habia puesto lo mismo pero con tolower en el nuevo codigo, y graciñas otra vez :)

se nota q es un ejercicio para clase, no?  :P