私はJAXBの新機能で、汎用オブジェクトをアンマーシャルしようとしています。問題は、オブジェクト(java.lang.Object)を整列化および非整列化できる必要があることです。マーシャリングは正常に行いましたが、アンマーシャリングを実行すると、自分自身のオブジェクトではなく、レスポンスに「ElementNSImpl」オブジェクトが追加されています。
Message.javaJAXBアンマーシャル汎用オブジェクト
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Message {
@XmlAnyElement(lax=true)
private Object obj;
//getter and setter
}
SomeBean.java
@XmlRootElement(name="somebean")
public class SomeBean {
private String variable;
//getter and setter
}
そして、これは/アンマーシャリング
Message m = new Message();
SomeBean sb = new SomeBean();
sb.setVariable("lalallalala");
m.setObj(sb);
JAXBContext jaxbContext = JAXBContext.newInstance("jaxb.entities");
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
StringWriter sw = new StringWriter();
jaxbMarshaller.marshal(m, sw);
System.out.println(sw.toString()); //this shows me the xml correctly
//unmarshal code
JAXBContext jc = JAXBContext.newInstance(Message.class);
StringReader reader = new StringReader(sw.toString());
Unmarshaller unmarshaller = jc.createUnmarshaller();
Object result = unmarshaller.unmarshal(reader);
Message msg = (Message)result;
をマーシャリングするためのコードです:
これは関与豆です
jaxb.indexの
内容:
Message
SomeBean
生成されるXMLは、(<?xml version="1.0" encoding="UTF-8" standalone="yes"?><message><somebean><variable>lalallalala</variable></somebean></message>
)大丈夫ですが、私は評価するとき "msg.getObjは()" 非整列化した後、私はSomeBeanインスタンスが、ElementNSImplを得ることはありません。
私の質問は、私がマーシャリングしたSomeBeanオブジェクトをどうやって元に戻すことができるかということです。
ありがとうございます。