Olá!!
Tenho um programa que lê um XML utilizando o org.w3c.dom.* Quando tento criar uma lista com os nomes das variantes que há no XML dá erro!
Parte do XML lido:<padrao numero="7" nome="Realizar Acompanhamento" variante="S" opcional="N">
...
<variante numero="1" nome="Avaliações Educação Física">
...
<variante numero="2" nome="Avaliações Fisioterapia">
...
<variante numero="3" nome="Avaliações Terapia Ocupacional" />
public Vector getVariantes (String padrao){
Vector variantes = new Vector();
if (eVariante(padrao)){
no = getTag("padrao");
for (int i =0; i < no.getLength(); i++){
Element elemento = (Element)no.item(i);
//verifica se o padrao é o mesmo passado como parametro
if (elemento.getAttribute("nome").equals(padrao)){
i = no.getLength() +1;
NodeList lista = elemento.getChildNodes();
for (int j=0; j<lista.getLength(); j++){
elemento = (Element)lista.item(j); // ** ERRO !!! **
//define os atributos das tabelas, analisando a tag atributo
if( elemento.getTagName().equals("variante")){
variantes.addElement(elemento.getAttribute("nome"));
}
}
}
}
}
return variantes;
}
O erro na execução de "elemento = (Element)lista.item(j);":
java.lang.ClassCastException
at gerador.XMLManager.getVariantes(XMLManager.java:208)
at gerador.FrameGerador.elaboraPanelPadroes(FrameGerador.java:372)
at gerador.FrameGerador.btnAvancar_actionPerformed(FrameGerador.java:681)
at gerador.FrameGerador$8.actionPerformed(FrameGerador.java:191)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
O que fazer?? Parece que o problema está em que lista.item(j) é um Node, mas eu preciso que ele seja um Element, para análise futura... Como resolvo isso?? Alguma dica de codificação??