मैं एक ऐसे एपीआई के साथ काम कर रहा हूं जिस पर मेरा नियंत्रण नहीं है, जो एक्सएमएल लौटाता है। असल में मेरे पास directory
ऑब्जेक्ट है जिसमें कई directory
और file
ऑब्जेक्ट्स शामिल हो सकते हैं जो कुछ अन्य आदिम फ़ील्ड के बीच किसी भी टैग द्वारा लिपटे नहीं हैं। file
ऑब्जेक्ट में कुछ आदिम फ़ील्ड हैं, और 2 सूचियां जो tPathList
और oPathList
टैग द्वारा लिपटे हैं।समस्या निवारण JAXB unmarshalling एनपीई
<hwreply>
<result>1</result>
<directory>
<file>
<created>DATE</created>
<modified>DATE</modified>
<name>STRING</name>
<size>INT</size>
<tPath>STRING</tPath>
<oPath>STRING</oPath>
<aPath>STRING</aPath>
<tPathList>
<tPath>STRING</tPath>
...
</tPathList>
<oPathList>
<oPath>STRING</oPath>
...
</oPathList>
</file>
<file>...</file>
...
<directory>...</directory>
<directory>...</directory>
...
<nEntries>5</nEntries>
<created>DATE</created>
<modified>DATE</modified>
</directory>
</hwreply>
मैं निर्देशिका और फाइल वस्तुओं, और OpenDirectory जो जड़ है बनाया है:
नीचे जैसे XML का एक उदाहरण है। जब मैं फोन
OpenDirectory od = response.getEntity(OpenDirectory.class);
मैं निम्न अपवाद:
Exception in thread "main" java.lang.NullPointerException
at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:290)
at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:254)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Scope.add(Scope.java:106)
at com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty$ReceiverImpl.receive(ArrayERProperty.java:195)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement(UnmarshallingContext.java:507)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:145)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:120)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:103)
at com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider.readFrom(XMLRootElementProvider.java:115)
at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:553)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:506)
at liveperson.lphosting.plugins.cdn.proxy.highwinds.HighwindsProxy.getDirectory(HighwindsProxy.java:49)
at liveperson.lphosting.plugins.cdn.proxy.highwinds.HighwindsProxy.main(HighwindsProxy.java:59)
मैं लगा कि यह सूचियों मेरे पास है में से एक से संबंधित है, लेकिन मैं समझ नहीं सकता मैं कहाँ गलती कर दी । किसी भी सहायता की सराहना की जाएगी।
अग्रिम धन्यवाद।
@XmlRootElement(name = "hwreply")
public class OpenDirectory extends ResponseBase {
@XmlElement(name="session")
public Session getSession() {...}
public void setSession(Session session) {...}
@XmlElement(name="directory")
public Directory getDirectory() {...}
public void setDirectory(Directory directory) {...}
}
public class Directory {
...
private List<Directory> directories;
private List<File> files;
@XmlElement(name="nEntries")
public int getnEntries() {...}
public void setnEntries(int nEntries) {...}
@XmlElement(name="name")
public String getName() {... }
public void setName(String name) {... }
@XmlElement(name="readonly")
public boolean isReadonly() {... }
public void setReadonly(boolean readonly) { ... }
@XmlElement (name="created")
public String getCreated() { ... }
public void setCreated(String created) { ... }
@XmlElement(name="modified")
public String getModified() {... }
public void setModified(String modified) {... }
@XmlElements(
@XmlElement(name="directory", type=Directory.class)
)
public List<Directory> getDirectories() {
return directories;
}
public void setDirectories(List directories) {
this.directories = directories;
}
@XmlElements(
@XmlElement(name="file", type=File.class)
)
public List<File> getFiles() {
return files;
}
public void setFiles(List files) {
this.files = files;
}
}
public class File {
private List<String> tPathList;
private List<String> oPathList;
@XmlElement(name="xferStatus")
public int getXferStatus() {...}
public void setXferStatus(int xferStatus) {...}
@XmlElement(name="size")
public int getSize() {...}
public void setSize(int size) {...}
@XmlElement(name="tPath")
public String gettPath() {...}
public void settPath(String tPath) {...}
@XmlElement(name="oPath")
public String getoPath() {...}
public void setoPath(String oPath) {...}
@XmlElementWrapper(name="tPathList")
@XmlElements(
@XmlElement(name="tPath", type=String.class)
)
public List gettPathList() {
return tPathList;
}
public void settPathList(List tPathList) {...}
@XmlElementWrapper(name="oPathList")
@XmlElements(
@XmlElement(name="oPath", type=String.class)
)
public List getoPathList() {
return oPathList;
}
public void setoPathList(List oPathList) {
this.oPathList = oPathList;
}
}
मिले समस्या। अगर यह फ़ाइल वर्ग में 'सेटफाइल (सूची फाइलें) 'की मदद करता है, तो सेटफाइल (सूची फाइलें)' पोस्ट के लिए खेद है :) –
जोड़ा गया यह एक उत्तर है। – Reddy
क्षमा न करें, मैंने बिल्कुल वही गलती की है और इस पोस्ट ने मुझे इसे हल करने में मदद की है। – 3urdoch