【问题标题】:How do I get the list of fieldname/elements from a JAXB generated java file?如何从 JAXB 生成的 java 文件中获取字段名/元素列表?
【发布时间】:2018-01-11 23:45:36
【问题描述】:

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

List String> 元素 = 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")
    ...
}

【问题讨论】:

  • 您可以使用 java 反射机制从任何类中获取字段。

标签: java xml jaxb


【解决方案1】:

借助 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多