2012-08-06 23 views
5

aquí n2 es mi NodeList, y yo sólo quiero ver el primer nodo hijo de mi elemento raízLa conversión a elemento dar ClassCastException

public void ClickMe(View view){ 


    Node rootElement=n2.item(0); 
    NodeList child=rootElement.getChildNodes(); 

    Node first=child.item(0); 
    //ClassCastException error is coming whenever i am casting first to Element. 

    Element nm=(Element)first; 

    Option q= getOption(nm,first); 
    Log.i(TAG,"the name is was talking about is : "+ q.getName()); 
} 

esto lo Logcat dice

07-31 20:32:38.376: E/AndroidRuntime(2950): Caused by: java.lang.ClassCastException: org.apache.harmony.xml.dom.TextImpl cannot be cast to org.w3c.dom.Element 
+0

primero es un nodo, no un elemento, por lo que no puede abatido explícitamente –

+0

he implementado este downcasting en mi analizador DOM, y allí funciona perfectamente bien, pero aquí da un error. –

+0

el espacio en blanco te matará. Está bastante claro que el primer nodo no es en realidad un elemento. –

Respuesta

10

Inténtelo como esto ....

NodeList LOP = odoc.getElementsByTagName("Your_XML_Top_Element"); 

       Node FPN =LOP.item(0); 
       try{ 
       if(FPN.getNodeType() == Node.ELEMENT_NODE) 
        { 

        Element token = (Element)FPN; 

        NodeList oNameList1 = token.getElementsByTagName("Your_XML_Sub_Node"); 
        Element firstNameElement = (Element)oNameList1.item(0); 
        NodeList textNList1 = firstNameElement.getChildNodes(); 

} 
+0

ver que no quiero buscar nodos con nombres de etiquetas, quiero buscarlos usando índices ... ¿es posible? –

+0

incluso está haciendo el mismo casting, Elemento token = (Element) FPN; en mi caso está dando errores, ¿cómo es eso? –

+0

Porque filtra los nodos ** Elemento **. ¡No todos los nodos en un documento xml son un ** Elemento **! La magia en este código es la declaración 'if'. –

2

Si el nodo es elemento entonces solo lo lanza. Haga un control como a continuación.

if (first.getNodeType() == Node.ELEMENT_NODE) { Element nm=(Element)first;} 
Cuestiones relacionadas