2012-08-06 11 views
5

tutaj n2 jest mój NodeList, a ja po prostu chcę zobaczyć pierwszego węzła potomnego mojego elementu głównegoCasting węzeł do elementu dając 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()); 
} 

tego co logcat mówi

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

pierwszy jest węzłem, a nie elementem, więc nie można ich wyraźnie przygnębiony –

+0

I wprowadziły to rzutowanie w dół w moim parsera DOM, i tam go działa doskonale, ale tutaj daje błąd. –

+0

białe znaki cię zabiją. Jest całkiem jasne, że pierwszy Węzeł nie jest faktycznie Elementem. –

Odpowiedz

10

Spróbuj to tak ....

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

widzę, że nie chcę pobierać węzłów z nazwami znaczników, chcę je pobrać za pomocą indeksów ... czy to możliwe? –

+0

nawet ty robisz to samo odlewanie, Element token = (Element) FPN; w moim przypadku daje błędy, jak to możliwe? –

+0

Ponieważ filtruje na ** elementach ** węzłów. Nie każdy węzeł w dokumencie XML to ** Element **! Magia w tym kodzie jest wyrażeniem "jeśli". –

2

Jeśli węzeł element następnie rzucić go. Sprawdź jak poniżej.

if (first.getNodeType() == Node.ELEMENT_NODE) { Element nm=(Element)first;} 
Powiązane problemy