Получение имени элемента xml из некоммерческого java-объекта с помощью JAXB

У меня есть поля с пометками @XmlElement(name="xxx") в моей модели Java.

Есть ли способ получить имя элемента XML программно?

1 ответ

Решение

Скажем, у нас есть аннотированный объект

 @XmlRootElement
 public class Product {
      String name;      

      @XmlElement(name="sss")
      public void setName(String name) {
           this.name = name;
      }
}

Код ниже будет печатать "sss" с помощью API отражения Java. Здесь "продукт" является объектом класса продукта

import java.lang.reflect.Method;
...
Method m = product.getClass().getMethod("setName",String.class);
XmlElement a = m.getAnnotation(XmlElement.class);
String nameValue = a.name();
System.out.println(nameValue);

Если вам нужно получить атрибут аннотации @XmlElement из частного поля, вы можете использовать что-то вроде этого:

Field nameField = product.getClass().getDeclaredField("name");
nameField.setAccessible(true);
XmlElement a = nameField.getAnnotation(XmlElement.class);
String nameValue = a.name();
System.out.println(nameValue);
Другие вопросы по тегам