2009-07-13 3 views
0

위해 나는상의 IllegalCastException 받고 있어요 다음 (굵은 선 참조)이 왜 그런지java.lang.IllegalCastException는 GWT

public void renderXML(final String xml) { 
    final Document xmlDoc = XMLParser.parse(xml); 
    final com.google.gwt.xml.client.Element root = xmlDoc.getDocumentElement(); 
    XMLParser.removeWhitespace(xmlDoc); 

    final NodeList collection = root.getElementsByTagName("collection"); 
     for (int i = 0; i < collection.getLength(); i++) { 
     **final Element coll= (Element)collection.item(i);** 
     RootPanel.get("slot2").add(new Label("coll: ")); 
     } 
} 

사람이 알고 있나요? 예제를 살펴 봤는데,이 예제는 어떻게해야하는지 보여줍니다. 나는 다음과 같은 관련 수입을 사용하고 있습니다 :

import com.google.gwt.xml.client.Document; 
import com.google.gwt.xml.client.NodeList; 
import com.google.gwt.xml.client.XMLParser; 

한 가지를 여기에주의를 만들기 위해 ... 요소로 가져 "수입 com.google.gwt.dom.client.Element,"내가 가져올 수 없습니다 "수입 com.google.gwt.xml.client.XMLParser; " 그것은 나에게 오류 줄 것 같이

어떤 제안 "가져 오기 com.google.gwt.xml.client.Element 다른 import 문에 충돌"? 감사!

답변

2

com.google.gwt.xml.client.Node하지 com.google.gwt.xml.client.Element 반환 com.google.gwt.xml.client.NodeList.item 방법. 이러한 Node은 일 수 있지만 보장은 없습니다. 전송하기 전에 반환되는 item의 유형을 확인해야합니다.

또한 적절한 Element을 사용해야합니다. 당신은 다른 하나를 대체 할 수 없습니다. 다른 Element을 가져 오지 않거나 여기에 을 지정해야합니다. 당신이 약 Element 신경, 당신은 다른 가져 오기를 제거하지 않는 코드에서 가정 예를 들어

은 다음과 같은 것으로 루프를 변경할 수 있습니다 일,

final NodeList collection = root.getElementsByTagName("collection"); 
for (int i = 0; i < collection.getLength(); i++) { 

    Node node = collection.item(i); 
    if (!(node instanceof com.google.gwt.xml.client.Element)) { 
     continue; 
    } 

    com.google.gwt.xml.client.Element coll = 
    (com.google.gwt.xml.client.Element)node; 
    RootPanel.get("slot2").add(new Label("coll: ")); 
} 
+0

그것은 트릭을했다, 고마워! – littleK

1

가져 오기 라인에서 선언하는 대신 소스 코드로 직접 가져 오려고 했습니까?

public void renderXML(final String xml) { 
     // just directly import it as local variable. 
     final Document xmlDoc = com.google.gwt.xml.client.XMLParser.XMLParser.parse(xml); 
     final com.google.gwt.xml.client.Element root = xmlDoc.getDocumentElement(); 
     XMLParser.removeWhitespace(xmlDoc); 

     final NodeList collection = root.getElementsByTagName("collection"); 
      for (int i = 0; i < collection.getLength(); i++) { 
      **final Element coll= (Element)collection.item(i);** 
      RootPanel.get("slot2").add(new Label("coll: ")); 
      } 
} 

도움이되기를 바랍니다.

타이거

+0

타이거. 당신의 도움을 주셔서 감사합니다! – littleK