java.lang.ClassCastException : com. kk.COUNTRY 无法转换为 javax.xml.bind.JAXBElement

标签 java jaxb classcastexception unmarshalling

我的主要类(class)是

    public static void main(String[] args) throws JAXBException,
        FileNotFoundException {

    Class[] classes = new Class[5];
    classes[0] = com.kk.AddressDetails.class;
    classes[1] = com.kk.COUNTRY.class;
    classes[2] = com.kk.ObjectFactory.class;
    classes[3] = com.kk.Details.class;
    classes[4] = com.kk.Districts.class;

    JAXBContext context = JAXBContext.newInstance(classes);

    Unmarshaller unmarshaller = context.createUnmarshaller();

    JAXBElement<COUNTRY> unmarshal = (JAXBElement<COUNTRY>) unmarshaller
            .unmarshal(new File("src\\countrydetails.xml"));
    COUNTRY value = unmarshal.getValue();
            System.out.println(value);

因此,在编译时,我在线程“main”java.lang.ClassCastException中遇到了此异常:com.kk.COUNTRY无法转换为javax.xml.bind.JAXBElement 在 main.kk.ClientApp.main(ClientApp.java:31)

最佳答案

自从您的 COUNTRY类注释为 @XmlRootElement这意味着它与根元素唯一关联,解码操作的结果将是 COUNTRY

COUNTRY c = (COUNTRY) unmarshaller.unmarshal(xml);

如果改为 COUNTRY有一个或多个对应的@XmlElementDecl注释或者您使用了 unmarshal采取 Class 的方法参数,您将获得 JAXBElement 的实例

JAXBElement<COUNTRY> c = unmarshaller.unmarshal(xml, COUNTRY.class);

了解更多信息

关于java.lang.ClassCastException : com. kk.COUNTRY 无法转换为 javax.xml.bind.JAXBElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336572/

相关文章:

inheritance - eclipselink/Moxy : inheritance and attribute name oveloading based on type

java - 使用 NewInstance 进行转换

java - 出现错误 java.lang.ClassCastException : java. lang.String 无法转换为 [Ljava.lang.Object;

java - 我如何覆盖 HashMap 的 putAll 来调用每个 <K,V> 对?

java - 使用外部文件的空指针异常

java - JAXB - 检查是否存在子元素

java - 获取 com.sun.jersey.api.client.ClientHandlerException : while generating Docusign API token

java - 从 WAR 中复制 DLL 会导致 LF 变成 CRLF

java - 如何初始化 firebase 托管在 google app-engine 上的 spring-boot 应用程序

java - 尝试使用 jaxb 解码 xml