起初,当我发现JAXBElement时,我感到非常高兴 - 它删除了使用@XmlRootElement注释我的模型类的必要性。所以,我也希望我不再需要为我的hashmap或列表提供“Wrapper”类。但是,唉,使用list / hashmap编组JAXBElement会给我一个空集合。为什么这不起作用?是不是有一般处理集合的方法?我可能要编组许多不同类型的集合,因此为每个集合编写一个包装器可能会太多。
示例代码 -
public static void main(String[] args) throws JAXBException, IOException {
List<String> list = new ArrayList<String>();
list.add("one");
list.add("five");
list.add("twentyone");
list.add("seventytwo");
Object data=list;
Class dataClass= data.getClass();
JAXBContext context = null;
try {
context = JAXBContext.newInstance(data.getClass());
} catch (JAXBException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String dataClassNameTemp = dataClass.getSimpleName();
String firstLetter = dataClassNameTemp.substring(0, 1).toLowerCase();
String dataClassName = firstLetter + dataClassNameTemp.substring(1);
JAXBElement JAXBData = new JAXBElement(new QName(dataClassName),dataClass, data);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
/* m.marshal(data,System.out);*/
m.marshal(JAXBData, System.out);
File file = new File("/home/aneeshb/exp/map1.xml");
FileWriter fw = new FileWriter(file);
m.marshal(JAXBData, fw);
}
输出 -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<arrayList/>