Monday, 15 April 2013

Unmarshalling XML into Java object JAXB -



Unmarshalling XML into Java object JAXB -

i having xml document follows,

<configuration> <shop> <level>1</level> <block> <items> <item>basic</item> </items> </block> </shop> <shop> <level>2</level> <block> <items> <item>basic</item> <item>pin</item> </items> </block> </shop></configuration>

and have classes follows,

@xmlrootelement(name = "configuration") class shopconfig { private list<shop> shops; @xmlelementwrapper(name = "configuration", nillable = false) @xmlelement(name = "shop", nillable = false) public list<shop> getshops() { homecoming shops; } public void setshops(list<shop> shops) { this.shops = shops; } public void print(){ for(shop shop: shops){ list<string> l = shop.getitemnames(); for(string s : l){ system.out.println(s); } } } } public class shop { private string level; private list<string> itemnames; public string getlevel() { homecoming level; } @xmlelement(name = "level") public void setlevel(string level) { this.level = level; } @xmlelementwrapper(name = "items", nillable = false) @xmlelement(name = "item", nillable = false) public list<string> getitemnames() { homecoming itemnames; } public void setitemnames(list<string> itemnames) { this.itemnames = itemnames; } }

i unmarshall xml follows,

private static shopconfig initshopconfig() throws jaxbexception { string configpath = "config.xml"; file file = new file(configpath); jaxbcontext ctx = jaxbcontext.newinstance(shopconfig.class); unmarshaller um = ctx.createunmarshaller(); homecoming (shopconfig) um.unmarshal(file); }

but when trying print gives npe when seek phone call print method saying shops variable null. means didn't unmarshall properly. wrong doing here?

public static void main(string args[]){ shopconfig l = (shopconfig)configloader.getinstance().getconfig(); l.print(); }

the exception not informative,

exception in thread "main" java.lang.nullpointerexception @ config.shopconfig.print(shopconfig.java:42) @ config.test.main(test.java:9) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ com.intellij.rt.execution.application.appmain.main(appmain.java:134)

java xml jaxb unmarshalling

No comments:

Post a Comment