Я пытаюсь написать и прочитать файл XML с моим сотрудником ArrayList
.
Я заполняю объект ArrayList
некоторыми объектами сотрудника (Empleado
):
public class Alm_datos extends InputSource{
static ArrayList<Empleado> listaEmpleados = new ArrayList<>();
public void setDatos(ArrayList<Empleado> listaEmpleados) {
this.listaEmpleados = listaEmpleados;
}
public ArrayList<Empleado> getDatos() {
return listaEmpleados;
}
Это мой Xstream
класс:
public class Xstream {
Alm_datos alm = new Alm_datos();
ArrayList<Empleado> almacen = alm.getDatos();
public void xstreamSerializar() throws FileNotFoundException{
if(almacen == null || almacen.size() == 0){
System.out.println(" ");
System.out.println("--- Aún no hay empleados registrados, no se puede escribir el fichero ---");
System.out.println(" ");
}//END IF
else{
XStream xs = new XStream();
xs.alias("Empleado", Empleado.class);
xs.alias("ListaEmpleados", Alm_datos.class);
xs.toXML(almacen, new FileOutputStream("EmpleadosXS.xml"));
System.out.println(" ");
System.out.println("--- Archivo EmpleadosXS.xml guardado correctamente ---");
System.out.println(" ");
}//END ELSE
}//END METODO xstreamSerializar
Метод Serialize
записывает мой XML так:
<list>
<Empleado>
<idEmpleado>0</idEmpleado>
<nombre>ARTURO</nombre>
<apell1>ROJAS</apell1>
<apell2>SOLER</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>1</idEmpleado>
<nombre>ARTURO</nombre>
<apell1>BELTRAN</apell1>
<apell2>ESTEBAN</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>2</idEmpleado>
<nombre>ANTONIO</nombre>
<apell1>BELTRAN</apell1>
<apell2>GAGO</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>3</idEmpleado>
<nombre>ANGEL</nombre>
<apell1>MARTIN</apell1>
<apell2>HARO</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>4</idEmpleado>
<nombre>PERICO</nombre>
<apell1>PEREZ</apell1>
<apell2>VILLANUEVA</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>5</idEmpleado>
<nombre>CARLOS</nombre>
<apell1>BLANCO</apell1>
<apell2>MARTIN</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>6</idEmpleado>
<nombre>PABLO</nombre>
<apell1>ROJAS</apell1>
<apell2>FERNANDEZ</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>7</idEmpleado>
<nombre>ALEJANDRO</nombre>
<apell1>POZA</apell1>
<apell2>MARTIN</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>8</idEmpleado>
<nombre>DANIEL</nombre>
<apell1>POZA</apell1>
<apell2>SAGUNTO</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>9</idEmpleado>
<nombre>ANGEL</nombre>
<apell1>POZA</apell1>
<apell2>MARTIN</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>10</idEmpleado>
<nombre>ANGEL</nombre>
<apell1>POZA</apell1>
<apell2>LUNA</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>11</idEmpleado>
<nombre>MARIA</nombre>
<apell1>SAGUNTO</apell1>
<apell2>BELTRAN</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>12</idEmpleado>
<nombre>ALEJANDRO</nombre>
<apell1>FERNANDEZ</apell1>
<apell2>GARCIA</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>13</idEmpleado>
<nombre>HECTOR</nombre>
<apell1>FRIAS</apell1>
<apell2>PEREZ</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>14</idEmpleado>
<nombre>CRISTOBAL</nombre>
<apell1>GARCIA</apell1>
<apell2>PEREZ</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>15</idEmpleado>
<nombre>MARIO</nombre>
<apell1>SOLER</apell1>
<apell2>MARTINEZ</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>16</idEmpleado>
<nombre>JORGE</nombre>
<apell1>CERVANTES</apell1>
<apell2>PASCUAL</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>17</idEmpleado>
<nombre>VICTOR</nombre>
<apell1>MARTIN</apell1>
<apell2>MONTES</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>18</idEmpleado>
<nombre>ANGEL</nombre>
<apell1>FERNANDEZ</apell1>
<apell2>DIAZ</apell2>
<salario>0.0</salario>
</Empleado>
<Empleado>
<idEmpleado>19</idEmpleado>
<nombre>ANDRES</nombre>
<apell1>VILLANUEVA</apell1>
<apell2>POZA</apell2>
<salario>0.0</salario>
</Empleado>
</list>
Но я не знаю, как читатьXML, это мой код:
public void xstreamDesSerializar() throws FileNotFoundException{
almacen.clear();
XStream xs= new XStream();
xs.alias("Empleado", Empleado.class);
xs.alias("ListaEmpleados", Alm_datos.class);
Empleado almacen = (Empleado) xs.fromXML(new FileInputStream("EmpleadosXS.xml")); // The problem is here
}//END METODO des-serializar
}//END CLASS
Ошибка NetBeans:
Security framework of XStream not initialized, XStream is probably vulnerable.
Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException:
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : Empleado
class : java.util.ArrayList
required-type : java.util.ArrayList
converter-type : com.thoughtworks.xstream.converters.collections.CollectionConverter
path : /list/Empleado
line number : 2
version : 1.4.11
-------------------------------