使用 JAXB 从未编组的 java 对象中获取 xml 元素名称

fro*_*roi 5 java xml jaxb

我的 Java 模型中有带有注释的字段@XmlElement(name="xxx")

有没有办法以编程方式获取 xml 元素名称?

div*_*ero 4

假设我们有带注释的实体

 @XmlRootElement
 public class Product {
      String name;      

      @XmlElement(name="sss")
      public void setName(String name) {
           this.name = name;
      }
}
Run Code Online (Sandbox Code Playgroud)

下面的代码将使用java Reflection API打印“sss” 。这里的“产品”是产品类的对象

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);
Run Code Online (Sandbox Code Playgroud)

如果您需要从私有字段获取@XmlElement注释属性,您可以使用如下内容:

Field nameField = product.getClass().getDeclaredField("name");
nameField.setAccessible(true);
XmlElement a = nameField.getAnnotation(XmlElement.class);
String nameValue = a.name();
System.out.println(nameValue);
Run Code Online (Sandbox Code Playgroud)