我正在尝试用 Object 字段(可以是多种类型的类)来编组一个 Object。然后,我将使用套接字发送生成的 XML。我的代码如下;
我想编组的班级
public class Message {
private String metadata;
private Object payload;
public Message(String metadata,Object payload)
{
this.metadata=metadata;
this.payload=payload;
}
public Message() {
}
public String getMetadata() {
return metadata;
}
public void setMetadata(String metadata) {
this.metadata = metadata;
}
public Object getPayload() {
return payload;
}
public void setPayload(Object payload) {
this.payload = payload;
}
}
我如何尝试编组它的片段。
private Message sendData;
...
JAXBContext jc = JAXBContext.newInstance(sendData.getClass());
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
JAXBElement<Message> rootElement = new JAXBElement<Message>(
new QName(sendData.getClass().getSimpleName()), dataClass,
sendData);
m.marshal(rootElement, stringWriter);
当我第一次尝试使用 ArrayLlist 时,出现以下错误:
javax.xml.bind.MarshalException - 带有链接异常:[com.sun.istack.internal.SAXException2: java.util.ArrayList 类或其任何超类对此上下文都是未知的。javax.xml.bind.JAXBException:类 java.util.ArrayList 或其任何超类在此上下文中都是已知的。]
现在我明白它不知道如何解析它。在查看并实现了这个问题的答案后,将对象包装到 JAXBElement 中,我仍然遇到上述错误。
任何想法是我如何解决这个问题?非常感激!