আমারও একই সমস্যা ছিল .. এটি আমাকে সহায়তা করেছে, আমি আমার ক্লাসের একই ক্ষেত্রের নামগুলি xML ফাইলের ট্যাগের নাম হিসাবে উল্লেখ করেছি (ফাইলটি একটি বাহ্যিক সিস্টেম থেকে আসে)।
উদাহরণ স্বরূপ:
আমার এক্সএমএল ফাইল:
<Response>
<ESList>
<Item>
<ID>1</ID>
<Name>Some name 1</Name>
<Code>Some code</Code>
<Url>Some Url</Url>
<RegionList>
<Item>
<ID>2</ID>
<Name>Some name 2</Name>
</Item>
</RegionList>
</Item>
</ESList>
</Response>
আমার প্রতিক্রিয়া শ্রেণি:
@XmlRootElement(name="Response")
@XmlAccessorType(XmlAccessType.FIELD)
public class Response {
@XmlElement
private ESList[] ESList = new ESList[1]; // as the tag name in the xml file..
// getter and setter here
}
আমার ইএসলিস্ট ক্লাস:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="ESList")
public class ESList {
@XmlElement
private Item[] Item = new Item[1]; // as the tag name in the xml file..
// getters and setters here
}
আমার আইটেম ক্লাস:
@XmlRootElement(name="Item")
@XmlAccessorType(XmlAccessType.FIELD)
public class Item {
@XmlElement
private String ID; // as the tag name in the xml file..
@XmlElement
private String Name; // and so on...
@XmlElement
private String Code;
@XmlElement
private String Url;
@XmlElement
private RegionList[] RegionList = new RegionList[1];
// getters and setters here
}
আমার অঞ্চল তালিকা ক্লাস:
@XmlRootElement(name="RegionList")
@XmlAccessorType(XmlAccessType.FIELD)
public class RegionList {
Item[] Item = new Item[1];
// getters and setters here
}
আমার ডেমোউমেনশেলিং ক্লাস:
public class DemoUnmarshalling {
public static void main(String[] args) {
try {
File file = new File("...");
JAXBContext jaxbContext = JAXBContext.newInstance(Response.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
jaxbUnmarshaller.setEventHandler(
new ValidationEventHandler() {
public boolean handleEvent(ValidationEvent event ) {
throw new RuntimeException(event.getMessage(),
event.getLinkedException());
}
}
);
Response response = (Response) jaxbUnmarshaller.unmarshal(file);
ESList[] esList = response.getESList();
Item[] item = esList[0].getItem();
RegionList[] regionLists = item[0].getRegionList();
Item[] regionListItem = regionLists[0].getItem();
System.out.println(item[0].getID());
System.out.println(item[0].getName());
System.out.println(item[0].getCode());
System.out.println(item[0].getUrl());
System.out.println(regionListItem[0].getID());
System.out.println(regionListItem[0].getName());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
এটি দেয়:
1
Some name 1
Some code
Some Url
2
Some name 2
ObjectFactory
উত্পন্ন উত্স থেকে ভুল ব্যবহার করার কারণে এটি ঘটতে পারে , যদি আপনি দুটি পৃথক উত্পন্ন উত্স ডিরেক্টরিগুলি মিশ্রিত করেন তবে সম্ভবত এটি সম্ভবত বেশি।