Anj26Pro:
buen día, Im tratando de crear un programa que lee un archivo XML y luego lo pone en un ArrayList y muestra cada nombre. La salida está en blanco, no hay nombres que aparecen, no cómo leer los objetos en el archivo cuando su una cadena y cómo puedo obtener los nombres de los XML en la matriz?
import java.beans.*;
import java.io.*;
import javax.swing.JOptionPane;
import java.util.*;
import java.lang.ArrayIndexOutOfBoundsException;
public class ReadNamesFromXML
{
public static void main(String[] args)
{
try {
XMLDecoder decoder = new XMLDecoder(new
FileInputStream("lab10.xml"));
ArrayList<String> names = new ArrayList<>();
System.out.println(names);
}
catch (FileNotFoundException e){
JOptionPane.showMessageDialog(null,"Not found");
}
catch(ArrayIndexOutOfBoundsException e){
JOptionPane.showMessageDialog(null,"Not found");
}
}
}
archivo XML:
<java version="1.8.0_144" class="java.beans.XMLDecoder">
<string>Harry</string>
<string>Ron</string>
<string>Hermione</string>
<string>Luna</string>
<string>Draco</string>
<string>Neville</string>
<string>Seamus</string>
<string>Ginny</string>
<string>Fred</string>
<string>George</string>
</java>
Mono :
Desde su descripción pregunta dice "salida está en blanco" , con el fin de obtener la salida en la lista de lo que necesita hacer siguiente modificación en el código.
- Es necesario leer los datos desde el archivo XML utilizando
decoder.readObject();
, esto le devolverá un objeto, por lo que el tipo echarlo a losString
y poner en suArrayList
. - Cuando
decoder.readObject();
se hace con la lectura y la adición de todo enArrayList
, arrojaráArrayIndexOutOfBoundsException
, allí cambiar el mensaje de "Todo eso, sumado a la lista de" en lugar de "no encontrado" , y digamos bien , una vez que ha hecho clic en OK , entonces imprimir su lista en la consola con todos los nombres . Además, es una buena práctica para cerrar toda su
streams
vez que su programa está terminando, para que usted podría utilizar unfinally
bloque.public static void main(String... args) { XMLDecoder decoder = null; ArrayList<String> names = null; String s = null; try { decoder = new XMLDecoder(new FileInputStream("lab10.xml")); names = new ArrayList<>(); do { s = (String)decoder.readObject(); names.add(s); } while(null != s); } catch (FileNotFoundException e){ JOptionPane.showMessageDialog(null,"Not found"); }catch(ArrayIndexOutOfBoundsException e){ JOptionPane.showMessageDialog(null,"All added to list"); } finally { System.out.println(names); decoder.close(); } }