1

Tengo este metodo, la idea es que lea una consulta de xml y cuando llegue a la etiqueta de cierre del prestamo pues cree el fichero con los datos que tiene y si no pues siga aumentando el String, una vez escrito el fichero los datos acumulados se borran y empieza de nuevo. El problema es que en la comparacion me dice que es false cuando llega a ese punto pero es verdadera. Solo me coge el ultimo de los 3 cierres que hay no se porque los anteriores da false y el ultimo true.Os dejo el metodo y el resultado de la query

public void CrearFichero3() {
            String datos = "";
            String script = cargarScrip(3);
            String resultado = queryDB(script);
            String[] lines = resultado.split("\n");
            for (int i = 0; i < lines.length; i++) {
                String mensaje=lines[i];
                datos += mensaje;
                if(lines[i].equals("</prestamo>"){
                    try {
                        String ruta = "c:\\ADtarea52020\\prestamo" + (i + 1) / 9 + ".xml";
                        File archivo = new File(ruta);
                        archivo.getParentFile().mkdir();
                        if (!archivo.exists()) {
                            BufferedWriter bw;
                            bw = new BufferedWriter(new FileWriter(archivo));
                            bw.write(datos);
                            datos = "";
                            bw.close();
                        } else {
                            JOptionPane.showMessageDialog(null, "El fichero prestamo" + (i + 1) / 9 + ".xml ya existe");
                        }
                    } catch (IOException e) {
                        System.out.println("Error al escribir");
                    }
                }

Esta es el resultado de la query

    <prestamo>
  <inicio>2011-05-02</inicio>
  <lector>
    <nombre>Pepito</nombre>
    <apellidos>Grillo</apellidos>
    <direccion>Rue Percebe, 13</direccion>
    <telefono>972987654</telefono>
  </lector>
</prestamo>
<prestamo>
  <inicio>2011-02-12</inicio>
  <devolucion>2011-02-16</devolucion>
  <lector>
    <nombre>Jose</nombre>
    <apellidos>Gutiérrez González</apellidos>
    <direccion>Rue Percebe, 13</direccion>
    <telefono>919485432</telefono>
  </lector>
</prestamo>
<prestamo>
  <inicio>2011-02-23</inicio>
  <devolucion>2011-03-10</devolucion>
  <lector>
    <nombre>Pepito</nombre>
    <apellidos>Grillo</apellidos>
    <direccion>Rue Percebe, 13</direccion>
    <telefono>972987654</telefono>
  </lector>
</prestamo>
unknow
  • 1,896
  • 9
  • 35
  • Noi porque lo e intenado con equals y tp vale – unknow Mar 27 '20 at 17:43
  • Puede ser que la línea no sea exactamente igual: hay un espacio, un tab, un fin de línea... podrías probar con `lines[i].trim().equals("")` a ver si te soluciona el problema o depurar para ver el valor exacto de la cadena – Pablo Lozano Mar 27 '20 at 18:02
  • ¿No sería mejor darle un `parse` al documento como XML y verificar desde ahí? – fredyfx Mar 27 '20 at 18:02

0 Answers0