我对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的默认行为?我明白这一点还是我迷路了?
答案 0 :(得分:0)
是否是JAXB的默认行为?
是的,这是预期的JAXB行为。如果您指定要解组的类,您将收到包含在JAXBElement
实例中的该类型的实例,该实例包含根元素信息。
了解更多信息