elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Trabajar con archivos xml en java!!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Trabajar con archivos xml en java!!!!  (Leído 4,687 veces)
01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Trabajar con archivos xml en java!!!!
« en: 22 Enero 2012, 13:00 pm »

saludos!!
 
les comento, tengo este xml:

taller.xml
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <taller>
  3.  
  4. <costurero value = "1111">
  5. <id> 1111 </id>
  6. </costurero>
  7.  
  8. <costurero value = "2222">
  9. <id> 2222 </id>
  10. </costurero>
  11.  
  12. <costurero value = "3333">
  13. <id> 3333 </id>
  14. </costurero>
  15.  
  16. </taller>
  17.  

costurero.xml
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <costurero>
  3.  
  4. <costurero value = "1111">
  5. <id> 1111 </id>
  6. <nombre> german </nombre>
  7. <apellido> perez </apellido>
  8. </costurero>
  9.  
  10. <costurero value = "2222">
  11. <id> 2222 </id>
  12. <nombre> alberto </nombre>
  13. <apellido> flores </apellido>
  14. </costurero>
  15.  
  16. <costurero value = "3333">
  17. <id> 3333 </id>
  18. <nombre> maria </nombre>
  19. <apellido> perez </apellido>
  20. </costurero>
  21.  
  22. </costurero>
  23.  

como podran ver estos 2 archivos se relacionan por medio de un id, entonces lo que estoy tratando de hacer es que tome el id de taller y lo busque en costurero.xml y si ha de existir lo guardo en la base de datos, he hecho esto:

Código
  1. public class principal
  2. {
  3.  public static void main(String[] args)
  4.  {
  5. File ArchivoT = new File("src/taller.xml");
  6. SAXBuilder parser1 = new SAXBuilder();
  7.  
  8. File ArchivoC = new File("src/costurero.xml");
  9. SAXBuilder parser2 = new SAXBuilder();
  10.  
  11. try
  12. {  
  13.      Document docT = parser1.build(ArchivoT);
  14.      Element elementoRaizT = docT.getRootElement();
  15.  
  16.      Document docC = parser2.build(ArchivoC);
  17.      Element elementoRaizC = docC.getRootElement();
  18.  
  19.      List arregloT = elementoRaizT.getChildren();
  20.      List arregloC = elementoRaizC.getChildren();
  21.  
  22.      for(int i=0; i<arregloT.size(); i++)
  23.      {
  24.     Element RegistroT = (Element)arregloT.get(i);
  25.        Element id = elementoRaizC.getAttributes();  
  26.  
  27.     for(int j=0; j<arregloC.size(); j++)
  28.     {
  29.     Element RegistroC = (Element)arregloC.get(j);
  30.  
  31.     System.out.println(RegistroT.getAttributeValue("value"));
  32.  
  33.     }
  34.      }
  35. }
  36.  catch (Exception e)
  37.  {
  38.    e.printStackTrace();
  39.  }
  40.  
  41.  }
  42. }
  43.  

estoy usando jdom pero me da error al tratar de guardar el id de taller en una variable..... en esta:

Código
  1.        Element id = elementoRaizC.getAttributes();      
  2.  
}

me pueden ayudar please!!!


En línea

Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Trabajar con archivos xml en java!!!!
« Respuesta #1 en: 22 Enero 2012, 20:33 pm »

El primer error que se ve a la vista es que estas haciendo un getAttributes la cual retorna una lista de atributos y quieres asignarla a un elemento.
 
 Esto es un elemento:
 
 
Código
  1. <id> id </id>
  2.  

 Esto es un elemento con atributo name con valor "something"
 
Código
  1. <id name="something > id </id>
  2.  

 Aclarado esto, el segundo error que me parece ver es que estas obteniendo los elementos de manera correcta pero no estas accediendo a los ids correctamente.
 Un getChildren te trae los elementos elementos costurero pero luego por cada elemento costurero debes obtener el child ID. Es decir, por cada nivel de profundidad de elementos es necesario hacer un getChild[ren].
 
 Algo así:
 
Código
  1. //Asumo que nada es null para hacer el codigo mas sencillo
  2. Iterator itr = (elementoRaizT.getChildren()).iterator(); //Lista con 3 elementos costurero
  3. while(itr.hasNext()) {
  4. Element elementoActual = (Element)itr.next(); //elemento costurero.
  5. Element id = elementoActual.getChild("id"); //elemento hijo id de costurero.
  6. System.out.println(id.getText()); //getText retorna el texto dentro del elemento.
  7. //process
  8. }

 Cualquier corrección es bienvenida porque hace mucho que no toco JDOM, pero en teoría esto te tendría que funcionar.

Saludos!
 
 


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Trabajar con archivos xml en java!!!!
« Respuesta #2 en: 22 Enero 2012, 23:59 pm »

hola! Littlehorse ,,, tenia el xml de taller malo,,,, es de esta forma:

taller.xml
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <taller>
  3.  
  4.    <empresa> Confeciones Don Marco </empresa>
  5.    <direccion> El Este </direccion>
  6.    <costurero> 1111 </costurero>
  7.    <costurero> 2222 </costurero>
  8.    <costurero> 3333 </costurero>
  9.  
  10. </taller>
  11.  

es la primera ves que estoy programando en java y pues en realidad me esta costando hacer el codigo de manera correcta, y pues lo que quiero hacer es me tome el dato de la etiqueta <costurero> y lo busque en el id de costurero, de forma que al existir lo guardo en mi base de datos postgreSQL, y te pregunto hay alguna forma de hacer esto aqui en este lenguaje ???
En línea

Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Trabajar con archivos xml en java!!!!
« Respuesta #3 en: 23 Enero 2012, 00:21 am »

La idea seria algo así:

taller.xml
1) getRootElement() // seria el elemento taller
2) getChildren("costurero") // Lista con los 3 costureros

costurero.xml
1) getRootElement //Seria el elemento costurero
2) getChildren("costurero") // Lista con los 3 costureros
3) Por cada elemento, getChild("id") // id del elemento costurero

Y luego solo tienes que comparar. getText para obtener el contenido de cada elemento (y usar trim).

Si tienes dudas me avisas pero intenta plasmar esto en el código teniendo en mente la estructura de niveles de los elementos.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Trabajar con archivos xml en java!!!!
« Respuesta #4 en: 23 Enero 2012, 00:27 am »

cuando dices:

(y usar trim)

a que te refieres???

saludos!.......

En línea

Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Trabajar con archivos xml en java!!!!
« Respuesta #5 en: 23 Enero 2012, 00:37 am »

Hay métodos de Element como getTextTrim() que retornan el contenido del elemento sin espacios, pero muchos usan el método trim de la clase String aparte. Es cuestión de gustos pero esta bien usar lo que sea que quite los espacios cuando estos no son relevantes al comparar cadenas, de lo contrario puedes obtener resultados indeseados.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Trabajar cn archivos
Programación Visual Basic
Lambda 1 1,468 Último mensaje 18 Abril 2006, 22:28 pm
por NYlOn
el canopus no me quiere trabajar archivos sfw de camtansia
Multimedia
jerumi 1 2,266 Último mensaje 11 Julio 2008, 01:45 am
por Songoku
Trabajar con Hilos en JAVA.
Java
joseprox 4 6,248 Último mensaje 19 Noviembre 2008, 15:28 pm
por Amerikano|Cls
cual es la mejor clase de java para trabajar con archivos
Java
jhonatanAsm 9 6,620 Último mensaje 17 Mayo 2012, 04:10 am
por RyogiShiki
Plantilla para trabajar con archivos en lenguaje C. « 1 2 »
Programación C/C++
NOB2014 10 5,165 Último mensaje 29 Abril 2017, 18:14 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines