2015-09-18 33 views
1

解組XML到Java對象我正在下面NullPointerException在執行解組:獲得NullPointerException異常而使用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

好吧。得到了答案。我沒有在Navigation.java

的問題是添加@XmlElement(NAME = 「NavigationEntry」)。 :)

相關問題