1

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

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

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

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

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

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

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

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

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

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

4

1 回答 1

0

这是 JAXB 的默认行为吗?

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

了解更多信息

于 2012-08-20T18:32:57.490 回答