JAXB:如何在没有注释的情况下判断一个类是否是Marshalable

时间:2010-08-05 17:53:52

标签: java annotations jaxb marshalling

我们有一个类,无法控制源代码,因此无法为JAXB注释它。我们还有一个框架来处理编组。有没有办法让这个框架在没有注释的情况下询问该类是否是可编组的?

1 个答案:

答案 0 :(得分:2)

没有标准机制,但我似乎通过尝试在类上创建JAXBContext来实现这一目标:

public boolean isValidJAXBClass(Class aClass) {
    try {
        JAXBContext.newInstance(aClass);
    } catch(JAXBException e) {
        return false;
    }
    return true;
}

您不需要任何注释来编组JAXB对象。你可以到处走走 通过将它包装在JAXBElement中来获得@XmlRootElement。

如果您想要一种替代方法来表示元数据,EclipseLink JAXB (MOXy)有一个基于JAXB元数据的外化绑定文件

示例文件类似于:

<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
    <java-types>
        <java-type name="org.example.order.PurchaseOrder">
            <java-attributes>
                <xml-attribute java-attribute="id"/>
                <xml-element java-attribute="customer">
                    <xml-java-type-adapter value="org.example.order.CustomerAdapter"/>
                </xml-element>
                <xml-element java-attribute="lineItems" name="line-item"/>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

有关详细信息,请参阅: