2014-02-19 98 views
1

我試圖解析使用此一JAXBU GPX文件是我的代碼:使用JAXB解析GPX

GpxType unmarshal(String path) { 

    GpxType list = new GpxType(); 
    try { 
     javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext 
        .newInstance(list.getClass().getPackage().getName()); 
     javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller(); 
     list = (GpxType) unmarshaller.unmarshal(new java.io.File(path)); //NOI18N 
     return list; 
    } catch (javax.xml.bind.JAXBException ex) { 
     // XXXTODO Handle exception 
     java.util.logging.Logger.getLogger("global") 
        .log(java.util.logging.Level.SEVERE, null, ex); //NOI18N 
    } 
    return null; 
} 

但我得到以下錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: 
        javax.xml.bind.JAXBElement cannot be cast to GPXfiles.GpxType 

所以即時猜測其原因使用JAXBU查找XML文件而不是GPX文件。任何幫助,將不勝感激:)

回答

0

你可以撥打JAXBIntrospector.getValue(Object)unmarshal操作的結果,以防止結果被包裹在JAXBElement

+0

我猜你的意思是把它放在這一行嗎? 'list =(GpxType)unmarshaller.unmarshal(new java.io.File(path)); // NOI18N' – ROBOCOP99