我们所说的JAXB默认行为是什么意思?

时间:2012-08-18 17:15:10

标签: jaxb marshalling unmarshalling

我对JAXB很新,我对JAXB默认行为感到困惑,我理解的是:

JAXB尝试通过自动检测所涉及的类来创建JAXBContext。例如,JAXB可以读取与预期不完全匹配的XML文档。这是JAXB unmarshaller的默认行为。 例如,如果我们有一个Foo类:

@XmlRootElement
class Foo{
  @XmlAttribute
  String name;
  @XmlElement
  String title;
}

Foo类是以下文档的代表性Java类:

<foo name=” element-value”>
    <title>some title</title>
</foo>

然后,如果我们有一个XML实例用于以下文档,其中元素的内容由Foo类表示。

<anotherTagName  name=”element-value”>
    <title>some title</title>
</anotherTagName>

我们可以将它解组为Foo类,使用带有'expectedType'参数的unmarshal方法的版本,如下所示:

JAXBElement<Foo> root = um.unmarshal(new StreamSource(new File(“output.xml”)),   
                                     Foo.class);
 Foo foo = root.getVlaue();

是否是JAXB的默认行为?我明白这一点还是我迷路了?

1 个答案:

答案 0 :(得分:0)

  

是否是JAXB的默认行为?

是的,这是预期的JAXB行为。如果您指定要解组的类,您将收到包含在JAXBElement实例中的该类型的实例,该实例包含根元素信息。

了解更多信息