使用JAXB解组XML文档的单个元素

4

我很新手JAXB。我有一个XML文档,其中包含序列化对象在其中一个元素内:

<?xml>
 <structure>
   ...blah-blah
   <serializedElement>
     ... JAXB xml block
   </serializedElement>
  </structure>
</xml>

我该如何反序列化这样的元素?

我写了以下代码:

org.w3c.dom.Document doc = db.parse(new StringInputStream(rawXml));
org.w3c.dom.Element obj = (org.w3c.dom.Element) doc.getElementsByTagName("serializedElement").item(0);
JAXBElement<MyJaxBObject> je = um.unmarshal(obj, MyJaxBObject.class);
System.out.println(je.getValue());  

但是这总是返回一个空值对象(尽管类正确)。
我做错了什么?
谢谢!
2个回答

5
好的,最后。问题在于缺失了。
dbf.setNamespaceAware(true);

在添加这一行代码之后,一切都正常工作了。

4
请尝试以下操作:
MyJaxBObject je = javax.xml.bind.JAXB.unmarshal(serializedElementAsString, MyJaxBObject.class);

谢谢,那个有效!但是我现在有点迷惑了——为什么按照我的示例创建解组器时它不起作用呢? - Anton Polyakov
1
好的,问题是当我调用unmarshall(Element, class)时出现了问题。当我调用unmarshall(Source, class)时一切正常。有什么想法吗? - Anton Polyakov
1
就我所见,JAXB API 中没有 unmarshall(Element, class) 方法。http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/xml/bind/Unmarshaller.html - alexblum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接