Java - unchecked conversion List<Element>, error -Xlint

   
Vista:

unchecked conversion List<Element>, error -Xlint

Publicado por Carmen Sofia Hernandez Rodriguez (3 intervenciones) el 14/05/2015 15:29:01
Buenos dias al compilar mi programa java en netbeans, me sale el siguiente error:

warning: [options] bootstrap class path not set in conjunction with -source 1.6
D:\Users\cherna08\CSOFIA\proyectos\MediacionXml_GG SN\src\mediacionxml_ggsn\LeerXML.java:94: warning: [unchecked] unchecked conversion
List<Element> campos_mi = campo.getChildren();
required: List<Element>
found: List

el codigo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
List campos_md = hijo.getChildren(); //ANTES
// List<Element> campos_md = new ArrayList<Element>();
 
 
String strArchivosCont = "";
//Se recorre la lista de campos de md
for (int j = 0; j < campos_md.size(); j++) {
//Se obtiene el elemento 'campo' 
Element campo = (Element) campos_md.get(j);
 
//valida si el campo es mi
if (campo.getName().equals(objArchivoB.getStrMI())) {
List<Element> campos_mi = campo.getChildren(); ==AQUI INDICA EL ERROR

Lo que veo es que se requiere List<Element> y estoy enviando List ( a traves de campo.getChildren() ), como puedo transformarlo a List <Element>
Espero me puedan ayudar es urgente!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

unchecked conversion List<Element>, error -Xlint

Publicado por Jose (1 intervención) el 14/05/2015 17:15:31
Aquí un ejemplo de lo que más o menos quieres obtener:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
 
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;
 
/** 
 * Clase de ejemplo de procesado de XML mediante JDOM. 
 *  
 * @author Maggie
 *  
 */  
public class ProcesaXML {
 
   public static void main(String[] args) {
 
      try {
         // Creamos el builder basado en SAX  
         SAXBuilder builder = new SAXBuilder();
         // Construimos el arbol DOM a partir del fichero xml  
         Document doc = builder.build(new FileInputStream("/ruta_a_fichero/fichero.xml"));
 
         // Obtenemos la etiqueta raíz  
         Element raiz = doc.getRootElement(); 
         // Recorremos los hijos de la etiqueta raíz  
         List<element> hijosRaiz = raiz.getChildren();  
         for(Element hijo: hijosRaiz){
            // Obtenemos el nombre y su contenido de tipo texto  
            String nombre = hijo.getName();
            String texto = hijo.getValue();
 
            System.out.println("\nEtiqueta: "+nombre+". Texto: "+texto);
 
            // Obtenemos el atributo id si lo hubiera  
            String id = hijo.getAttributeValue("id");
            if(id!=null){
               System.out.println("\tId: "+id);
            }
         }
 
         // Obtenemos una etiqueta hija del raiz por nombre  
         Element etiquetaHija = raiz.getChild("etiquetaHija");
         System.out.println(etiquetaHija.getName());
         // Incluso podemos obtener directamente el texto de una etiqueta hija  
         String texto = raiz.getChildText("etiquetaHija");
         System.out.println(texto);
 
         // Obtenemos una etiqueta hija del raiz por nombre con Namespaces  
         // Primero creamos el objeto Namespace  
         Namespace nsXela = Namespace.getNamespace("xela", "http://www.latascadexela.es");
         // Ahora obtenemos el hijo  
         Element etiquetaNamespace = raiz.getChild("etiquetaConNamespace", nsXela);
         System.out.println(etiquetaNamespace.getName());
 
         // Buscamos una etiqueta mediante XPath  
         Element etiquetaHijaXP = (Element)XPath.selectSingleNode(doc, "/etiquetaPrincipal/etiquetaHija");
         System.out.println(etiquetaHijaXP.getName());
 
         // Buscamos una etiqueta con namespace mediante XPath  
         Element etiquetaNamespaceXP = (Element)XPath.selectSingleNode(doc, "/etiquetaPrincipal/xela:etiquetaConNamespace");
         System.out.println(etiquetaNamespaceXP.getName());
 
         // Si hacemos uso muchas veces del mismo XPath sobre varios document  
         // es más eficiente crear un objeto XPath y usarlo varias veces  
         XPath xpathEtiquetaHija= XPath.newInstance("/etiquetaPrincipal/etiquetaHija");
         Element etiqueta = (Element)xpathEtiquetaHija.selectSingleNode(doc);
         System.out.println(etiqueta.getName());
 
         // Creamos una nueva etiqueta  
         Element etiquetaNueva = new Element("etiquetaNueva");
         // Añadimos un atributo  
         etiquetaNueva.setAttribute("atributoNuevo", "Es un nuevo atributo");
         // Añadimos contenido  
         etiquetaNueva.setText("Contenido dentro de la nueva etiqueta");
         // La añadimos como hija a una etiqueta ya existente  
         etiquetaHija.addContent(etiquetaNueva);
 
         // Vamos a crear un XML desde cero  
         // Lo primero es crear el Document  
         Document docNuevo = new Document();
         // Vamos a generar la etiqueta raiz  
         Element eRaiz = new Element("raiz");
         // y la asociamos al document  
         docNuevo.addContent(eRaiz);
 
         // Vamos a copiar la etiquetaHija del primer document a este  
         // Lo primero es crear una copia de etiquetaHija  
         Element copiaEtiquetaHija = (Element)etiquetaHija.clone();
         // Después la colocamos como hija de la etiqueta raiz  
         eRaiz.addContent(copiaEtiquetaHija);
 
         // Vamos a mover la etiquetaConNamespace a este document  
         // Primero la desasociamos de su actual padre  
         etiquetaNamespace.detach();
         // Una vez que ya es huerfana la podemos colocar donde queramos  
         // Por ejemplo, bajo la etiqueta raiz  
         eRaiz.addContent(etiquetaNamespace);
 
 
         // Vamos a serializar el XML  
         // Lo primero es obtener el formato de salida  
         // Partimos del "Formato bonito", aunque también existe el plano y el compacto  
         Format format = Format.getPrettyFormat();
         // Creamos el serializador con el formato deseado  
         XMLOutputter xmloutputter = new XMLOutputter(format);
         // Serializamos el document parseado  
         String docStr = xmloutputter.outputString(doc);
         // Serializamos nuestro nuevo document  
         String docNuevoStr = xmloutputter.outputString(docNuevo);
 
         System.out.println("XML parseado:\n"+docStr);
         System.out.println("XML nuevo:\n"+docNuevoStr);
 
      } catch (FileNotFoundException e) {
         e.printStackTrace();
      } catch (JDOMException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
 
   }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

unchecked conversion List<Element>, error -Xlint

Publicado por Tom (908 intervenciones) el 14/05/2015 17:42:42
Pues ese error quiere decir (y esto es obvio, pero se ve que estás bastante verde) que la invocación campo.getChildren() no devuelve el tipo que tu usas.

Ya que no indicas las librerías que estás usando (los programadores en java somos telépatas y adivinos) ni la máquina virtual, ni la versión, y la clase org.w3c.dom Element del java SE de Oracle (o sea, la que usarías desde java 6 si no utilizas ninguna librería externa adicional) no tiene el método getChildren() ... hay que suponer que estás usando _otra_ librería más.

Lo primero, primerísimo, que debes hacer es irte a la documentación de esa librería y mirar la definición del método en cuestión.

Lo más probable es que estés usando jdom (y ni siquiera lo sepas). En ese caso, te estaría dando el warning porque usas org.jdom.Element (que define java.util.List getChildren()) en lugar de usar org.jdom2.Element (que define java.util.List<Element> getChildren()).

Salud!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

unchecked conversion List<Element>, error -Xlint

Publicado por Carmen Sofia Hernandez Rodriguez (3 intervenciones) el 14/05/2015 17:50:32
Buenas, si disculpe no informe que estoy usando
jdom-1.1.2.jar

entonces debo cambiarlo por otro jar que sea jdom2 ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

unchecked conversion List<Element>, error -Xlint

Publicado por Tom (908 intervenciones) el 14/05/2015 18:04:54
Evidentemente, y usar org.jdom2.Element
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

unchecked conversion List<Element>, error -Xlint

Publicado por Carmen Sofia Hernandez Rodriguez (3 intervenciones) el 14/05/2015 22:57:16
Gracias Tom, ahora si me funciona despues de agregar el jdom2

---
Ahora me sale otro error:
warning: [options] bootstrap class path not set in conjunction with -source 1.6
D:\Users\cherna08\CSOFIA\proyectos\MediacionXml_GG SN\src\librerias\ReadFile.java:30: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
buffer.add(line);
where E is a type-variable:
E extends Object declared in class ArrayList
-
tengo el siguiente codigo
private ArrayList buffer;
..
buffer = new ArrayList();
for(line = in.readLine(); line != null; line = in.readLine())
buffer.add(line);

no entiendo bien el error?? debo agregar a buffer un elemento tipo Element??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

unchecked conversion List<Element>, error -Xlint

Publicado por Tom (908 intervenciones) el 15/05/2015 08:19:46
A ver, ¿ no deberías formarte un poco más en java ?

¿ Qué tipo de objetos va a contener buffer ? ¿ Strings ?

private ArrayList<String> buffer;
...
...
O, tal y como lo tienes ahora (raw type):

buffer.add((Object)line);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar