2015-09-18 2 views
1

Я получаю ниже NullPointerException при выполнении демаршаллинг:Получение NullPointerException во время демаршаллизации с XML в Java-объекта с использованием JAXB API

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

Не могли бы вы, пожалуйста, дайте мне знать, где я не прав с кодом. Я думаю, что я выполняю некоторые ошибки аннотация здесь. Ниже приведены мои файлы кода. Пожалуйста помоги.

site.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> 

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(); 
     } 
    } 
} 

ответ

0

Ну. получил ответ. Я не добавил @XmlElement (имя = "NavigationEntry") в Navigation.java

Вопрос фиксировано. :)

Смежные вопросы