Ajuda leitura xml com xstream

4 respostas
marcosbrandao

Galera…

Eu to me quebrando aqui, e nao to conseguindo usar o XStream pra ler um arquivo xml. Não sei o que esta acontecendo:

metodo para ler o xml:

public void geraMenuStream() throws ParserConfigurationException, SAXException, IOException, ClassNotFoundException, JDOMException, XMLStreamException{
        //busca requisicao da pagina
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        //caminho do arquivo
        String s = request.getSession().getServletContext().getRealPath("/menus.xml");
        
        File file = new File(s);
        if (file.exists()){
               
            BufferedReader br = new BufferedReader(new FileReader(file));
                       
            XStream xstream = new XStream();        
            List list = (List) xstream.fromXML(br);
            System.out.println(list);
        
        }     
        
}

O arquivo xml:

<?xml version="1.0" ?>
<menus>
    <menu dsc="Consultar">        
        <subMenu dsc="Departamentos">
            <itemSubMenus dsc="Ordem Crescente">
                 <Link>go_deptTableView</Link>
                 <icon>select_next.gif</icon>
            </itemSubMenus>
            <itemSubMenus dsc="Ordem Decrescente">
                 <Link>go_deptTableView</Link>
                 <icon>select_prev.gif</icon>
            </itemSubMenus>
        </subMenu>
    </menu>
    <menu dsc="Cadastrar">
        <subMenu dsc="Pessoas">
            <Link>go_cadPessoa</Link>
            <icon>oneormore.gif</icon>
        </subMenu>
        <subMenu dsc="Automovel">
            <Link>go_cadastroAutomovel</Link>    
        </subMenu>
    </menu>        
    <menu dsc="Sair">  
       <Link>go_goodBye</Link>
    </menu>
</menus>

quando executa esta linha:

List list = (List) xstream.fromXML(br);

Ta gerando um erro, mas se eu colocar uma rotina para ler o conteudo do BufferedReader antes, ele traz o xml. Estou fazendo alguma coisa errada nesta linha?

por favor, ja estou o dia todo tentando resolver isso.

Valeu…

4 Respostas

maquiavelbona

Coloca o erro que dá para podermos analisar melhor.

Até!

marcosbrandao

Ta ai a pilha de erros:

javax.faces.el.EvaluationException: javax.faces.el.EvaluationException: Exception getting value of property geraMenu of base of type : br.com.teclogica.exemploJsf.controller.Menu
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
        at javax.faces.component.UISelectItems.getValue(UISelectItems.java:110)
        at org.apache.myfaces.custom.navmenu.NavigationMenuUtils.addNavigationMenuItems(NavigationMenuUtils.java:115)
        at org.apache.myfaces.custom.navmenu.NavigationMenuUtils.getNavigationMenuItemList(NavigationMenuUtils.java:100)
        at org.apache.myfaces.custom.navmenu.jscookmenu.HtmlJSCookMenuRenderer.encodeChildren(HtmlJSCookMenuRenderer.java:161)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:701)
        at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:607)
        at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:544)
        at org.apache.jsp.inicial_jsp._jspx_meth_t_jscookMenu_1(inicial_jsp.java:517)
        at org.apache.jsp.inicial_jsp._jspx_meth_h_form_0(inicial_jsp.java:207)
        at org.apache.jsp.inicial_jsp._jspx_meth_f_view_0(inicial_jsp.java:141)
        at org.apache.jsp.inicial_jsp._jspService(inicial_jsp.java:98)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
        at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
        at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.faces.el.EvaluationException: Exception getting value of property geraMenu of base of type : br.com.teclogica.exemploJsf.controller.Menu
        at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:96)
        at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:167)
        at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:151)
        at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
        ... 56 more
Caused by: javax.faces.el.EvaluationException: Bean: br.com.teclogica.exemploJsf.controller.Menu, property: geraMenu
        at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:442)
        at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:82)
        ... 60 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:438)
        ... 61 more
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: menus : menus
        at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:49)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:72)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.CGLIBMapper.realClass(CGLIBMapper.java:40)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:60)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:76)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:26)
        at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:34)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:113)
        at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.unmarshal(ReferenceByXPathMarshallingStrategy.java:29)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:832)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:819)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:767)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:759)
        at br.com.teclogica.exemploJsf.controller.GeraMenuDinamico.geraMenuStream(GeraMenuDinamico.java:113)
        at br.com.teclogica.exemploJsf.controller.Menu.getGeraMenu(Menu.java:84)
        ... 66 more
maquiavelbona

Como você garante que o xstream vai entender que menus é um list?

marcosbrandao

maquiavelbona, na verdade este codigo com List eu tentei implementar por um modelo que encontrei, mas antes eu estava jogando pra dentro de um Object e ocorria o mesmo erro.

Criado 5 de fevereiro de 2007
Ultima resposta 5 de fev. de 2007
Respostas 4
Participantes 2