如何从JAXB生成的java文件中获取fieldname / elements列表?

时间:2018-01-10 22:05:12

标签: java xml jaxb

我试图弄清楚如何从使用JAXB创建的自动生成的Java文件中获取元素列表(' propOrder'中的所有名称)。我想要的是:

列表字符串> elements = getXMLElements(ExampleInfo.class);

我无法编辑生成的java类,因为可能会更改XSD架构。我试图获取startTime,stopTime和id的元素。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "exampleInfo", propOrder = {
    "startTime",
    "stopTime",
    "id",
     ...
})

public class ExampleInfo
    extends TypeInfo
{

    @XmlElement(name = "StartTime")
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar startTime;
    @XmlElement(name = "StopTime")
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar stopTime;
    @XmlElement(name = "id")
    ...
}

1 个答案:

答案 0 :(得分:0)

借助方法Class.getAnnotation(Class<A>),您可以轻松完成:

public static List<String> getXMLElements(Class<?> clazz) {
    XmlType xmlType = clazz.getAnnotation(XmlType.class);
    if (xmlType == null)
        return null;
    String[] propOrder = xmlType.propOrder();
    return Arrays.asList(propOrder);
}

然后像这样使用它:

List<String> elements = getXMLElements(ExampleInfo.class);