Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JAXB从未编组的java对象获取xml元素名_Java_Xml_Jaxb - Fatal编程技术网

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

使用JAXB从未编组的java对象获取xml元素名,java,xml,jaxb,Java,Xml,Jaxb,在我的Java模型中,我用@xmlement(name=“xxx”)注释了字段 有没有一种方法可以通过编程获得xml元素名?假设我们有带注释的实体 @XmlRootElement public class Product { String name; @XmlElement(name="sss") public void setName(String name) { this.name = name; } }

在我的Java模型中,我用
@xmlement(name=“xxx”)
注释了字段


有没有一种方法可以通过编程获得xml元素名?

假设我们有带注释的实体

 @XmlRootElement
 public class Product {
      String name;      

      @XmlElement(name="sss")
      public void setName(String name) {
           this.name = name;
      }
}
下面的代码将使用打印“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);
如果需要从私有字段中获取@XmlElement注释属性,可以使用如下方法:

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

+1-需要注意的一点是,如果注释只是
@xmlement
,那么name参数的值将是
##default
。在这种情况下,您需要将JAXB(JSR-222)规范中的规则应用于属性名,以派生元素名。@BlaiseDoughan您能详细说明如何使用JAXB派生元素名吗?