2012-08-06 94 views
5

這裏N2是我的節點列表,我只是想看看我的根元素的第一個子節點鑄造節點元素給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()); 
} 

這是什麼logcat的說

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

首先是一個節點,而不是元素,所以你不能垂頭喪氣它明確 – 2012-08-06 04:59:43

+0

我在DOM解析器實現了這個向下轉換,它就在那裏工作得很好,但是在這裏出現錯誤。 – 2012-08-06 05:02:05

+0

空白會殺了你。很明顯,第一個Node實際上並不是一個Element。 – 2012-08-06 05:07:17

回答

10

嘗試像這樣....

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

看到我不想獲取具有標籤名稱的節點,我想使用索引獲取它們。是否有可能? – 2012-08-06 05:04:35

+0

即使你在做同樣的演員, 元素標記=(元素)FPN; 在我的情況下,它給錯誤,那是怎麼回事? – 2012-08-06 05:06:25

+0

因爲他過濾了** Element **節點。不是XML文檔中的每個節點都是**元素**!這段代碼中的魔力就是'if'語句。 – 2012-08-06 05:11:19

2

如果節點元素,然後只施放它。進行如下檢查。

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