Foros del Web » Programando para Internet » Android »

Error con XML y Android

Estas en el tema de Error con XML y Android en el foro de Android en Foros del Web. Buenas! Tengo una pequeña clase en JAVA que lee un XML y lo "parsea" en distintos tipos de objeto, para así poder tratar dichos objetos ...
  #1 (permalink)  
Antiguo 16/07/2013, 01:21
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Error con XML y Android

Buenas!

Tengo una pequeña clase en JAVA que lee un XML y lo "parsea" en distintos tipos de objeto, para así poder tratar dichos objetos a posteriori.

Este XML me viene desde internet, y con JAVA me funciona bien el "parseo". No obstante, usando la misma clase desde una aplicación android recibo un error...

Mi clase hace básicamente esto:

Código Java:
Ver original
  1. /**
  2.      * fill method.
  3.      * Fills data using given String array from Globals assigned file.
  4.      * Eg: fill(new String[]{"meta", "user", "activities")}
  5.      * @param curr
  6.          * @param file
  7.      * @return true if everything is ok; false otherwise
  8.      */
  9.     public boolean fill(String[] curr, String file){
  10.         try{
  11.             Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new java.io.StringReader(file)));
  12.  
  13.             doc.getDocumentElement().normalize();
  14.  
  15.             for(int i=0;i<curr.length;i++)
  16.                 this.treat((doc.getElementsByTagName(curr[i])), curr[i]);
  17.         }catch(ParserConfigurationException e){
  18.             this.error = Strings.PARSEEXCEPTION.getValue();
  19.             this.exception = e;
  20.             return false;
  21.         }catch(SAXException e){
  22.             this.error = Strings.SAXEXCEPTION.getValue();
  23.             this.exception = e;
  24.             return false;
  25.         }catch(IOException e){
  26.             this.error = Strings.IOEXCEPTION.getValue();
  27.             this.exception = e;
  28.             return false;
  29.         }
  30.  
  31.         return this.check();
  32.     }
  33.  
  34.         private void treat(NodeList nl, String kind){
  35.         for(int i=0;i<nl.getLength();i++)
  36.             this.add(nl.item(i), kind);
  37.     }
  38.  
  39.     private void add(Node n, String kind){
  40.         if(kind.equals("meta"))
  41.             this.addMeta(n);
  42.                 //más código
  43.        }
  44.  
  45.     private void addMeta(Node n){
  46.         String[] fields = {"src", "timestamp", "title", "kind", "startDate", "startWeek", "offset" , "print", "back", "forward", "fname", "lname", "ref", "crcData"};
  47.         Element e = (Element)n.getChildNodes();//AQUÍ FALLO!
  48.  
  49.         for(int i=0;i<fields.length;i++)
  50.             this.add(e.getElementsByTagName(fields[i]).item(0).getFirstChild(), "meta:"+fields[i]);
  51.     }

Y el error (en Android) me da justo cuando hago el cast a Element, me dice que hay un "ClassCastException", cuando en una ejecución JAVA normal no da error.

He leído que puede ser por los espacios en blanco o saltos de línea, pero el XML que recibo está en una sola línea y sin espacios en blanco...

Haciendo debug he intentado hacer lo siguiente - en el apartado de eclipse "expressions":

n.getChildNodes() => NodeList (long. 4)
(Element)n.getChildNodes.item(0) => Element
(Element)n.getChildNodes.item(1) => Element
(Element)n.getChildNodes.item(2) => Element
(Element)n.getChildNodes.item(3) => Element

Así que en principio se pueden hacer el cast.

Entonces, ¿quizás debería cambiar la línea que me da el error por algún tipo de bucle que me compruebe con un "if" si se puede hacer el cast y (si se puede) añadirlo a alguna lista?

El tema es que he probado de hacer algo así, pero no se que tipo de dato usar ya que ni Element, ni Node, ni NodeList, ni NodeImpl se pueden instanciar...

Desde ya gracias por cualquier info. que me podáis dar.

Un saludo!
  #2 (permalink)  
Antiguo 21/07/2013, 16:07
 
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires, Mar del plata
Mensajes: 250
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error con XML y Android

Pues si, yo he tenido problema con los saltos de línea.
prueba con palabras solas para ver si te trae bien el dato, asi descartas esa posibilidad.
  #3 (permalink)  
Antiguo 22/07/2013, 01:14
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Respuesta: Error con XML y Android

Cita:
Iniciado por Alemanarg Ver Mensaje
Pues si, yo he tenido problema con los saltos de línea.
prueba con palabras solas para ver si te trae bien el dato, asi descartas esa posibilidad.
He leído que puede ser por los espacios en blanco o saltos de línea, pero el XML que recibo está en una sola línea y sin espacios en blanco...

Lo recibo en una sola línea... jejeje

De todas maneras, he segregado la clase original, y estoy haciendo una clase hace "override" de los métodos problemáticos, usando un trato exclusivamente con "Node" y "NodeList".

Graicas por responder.

Etiquetas: eclipse, java, usar, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.