java - 使用 Jaxb API 将 XML 解码为 Java 对象时获取 NullPointerException

标签 java xml nullpointerexception jaxb annotations

我在执行解码时收到以下NullPointerException:

    ID and SortOrder----------------------------------
Exception in thread "main" java.lang.NullPointerException
    at XmlToObject.main(XmlToObject.java:21)

您能告诉我代码哪里错了吗?我认为我在这里执行了一些错误的注释工作。下面是我的代码文件。请帮忙。

站点.xml

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Navigation>
    <NavigationEntry id="3DAB2FFB-1F19-41C6-B38D-77A890DB4D40" sortOrder="1">
        <hidepage>
            a
        </hidepage>
        <name>
            b
        </name>
        <url>
            c
        </url>
        <entitlement>
            d
        </entitlement>
    </NavigationEntry>
</Navigation>

导航.java

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Navigation") 
public class Navigation {

    private NavigationEntry NavigationEntry;

    @XmlElement
    public NavigationEntry getNavigationEntry() {
        return NavigationEntry;
    }

    public void setNavigationEntry(NavigationEntry navigationEntry) {
        NavigationEntry = navigationEntry;
    }   
}

NavigationEntry.java

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

public class NavigationEntry {
    private String id;
    private int sortOrder;
    private String hidepage;
    private String name;
    private String url;
    private String entitlement;

    @XmlAttribute 
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    @XmlAttribute 
    public int getSortOrder() {
        return sortOrder;
    }
    public void setSortOrder(int sortOrder) {
        this.sortOrder = sortOrder;
    }

    @XmlElement
    public String getHidepage() {
        return hidepage;
    }
    public void setHidepage(String hidepage) {
        this.hidepage = hidepage;
    }

    @XmlElement
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }

    @XmlElement
    public String getEntitlement() {
        return entitlement;
    }
    public void setEntitlement(String entitlement) {
        this.entitlement = entitlement;
    }

}

XmlToObject.java

import java.io.File;   

import javax.xml.bind.JAXBContext;  
import javax.xml.bind.JAXBException;  
import javax.xml.bind.Unmarshaller;  

public class XmlToObject {  
    public static void main(String[] args) {  

     try {  

        File file = new File("site.xml");  
        JAXBContext jaxbContext = JAXBContext.newInstance(Navigation.class);  

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  
        Navigation que= (Navigation) jaxbUnmarshaller.unmarshal(file);

        System.out.println("ID and SortOrder----------------------------------");  
        System.out.println(que.getNavigationEntry().getId() +" " + que.getNavigationEntry().getSortOrder());  
        System.out.println("Hidepage----------------------------------" + que.getNavigationEntry().getHidepage());  
        System.out.println("name----------------------------------" + que.getNavigationEntry().getName());
        System.out.println("url----------------------------------" + que.getNavigationEntry().getUrl());
        System.out.println("entitlement----------------------------------" + que.getNavigationEntry().getEntitlement());

        System.out.println();
      } catch (JAXBException e) {  
        e.printStackTrace();  
      }  
    }  
}  

最佳答案

嗯。得到了答案。我没有在 Navigation.java

中添加 @XmlElement(name="NavigationEntry")

问题已解决。 :)

关于java - 使用 Jaxb API 将 XML 解码为 Java 对象时获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652888/

相关文章:

java - 如何将类实现到 ActionListener 中?

java - 抽屉项目名称显示为 0

php - 将 XML 值导入 MYSQL

java - 帐户设置适配器问题

java - 什么是NullPointerException,我该如何解决?

应用程序关闭时尝试获取 mainApp 中文本字段的文本时出现 java.lang.NullPointerException

java - hibernate 不设置别名和 oracle 抛出 `ORA-00918: column ambiguously defined` 错误

java - 设置 DatePickerDialog 获取 IllegalArgumentException 的最小日期 Fromdate 不在 toDate 之前

java - 查询没有结果 JDBCTemplate

java - Freemarker 模板未加载