使用JAXB解析GPX

时间:2014-02-19 00:05:32

标签: java xml jaxb gpx

我正在尝试使用JAXBU解析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文件。任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

您可以对JAXBIntrospector.getValue(Object)操作的结果调用unmarshal,以防止JAXBElement中包含的结果。