Java XMLDecoder archivo de lectura en ArrayList y ArrayIndexOutOfBoundsException

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.

  1. Es necesario leer los datos desde el archivo XML utilizando decoder.readObject();, esto le devolverá un objeto, por lo que el tipo echarlo a los Stringy poner en su ArrayList.
  2. Cuando decoder.readObject();se hace con la lectura y la adición de todo en ArrayList, 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 .
  3. Además, es una buena práctica para cerrar toda su streamsvez que su programa está terminando, para que usted podría utilizar un finallybloque.

    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();
        }
    }
    

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=338567&siteId=1
Recomendado
Clasificación