我有一个看起来像这样的字段的类
@XmlElement(name = "Name", namespace = "a:b:c:1", required = true)
protected String firstName
我想像这样使用 JXPath
String name = (String) context.getValue("Name");
但它不识别 XMLElement name 属性。有没有办法让它这样做?
我不认为你可以。JXPath 允许使用标准 bean get/is 表示法导航 bean 层次结构,但不提供访问字段注释的方法。
我想你也许应该看看这个答案。查找注释。也许您可以与 JXPath 解决方案结合使用?
我按照布赖恩的建议做了
Field[] fields = rq.getClass().getDeclaredFields();
Map<String, String> annotationMap = new HashMap<>();
for(Field field:fields)
{
if(field.getAnnotation(XmlElement.class).name().equals("Name"))
{
annotationMap.put("Name", field.getName());
}
}
String name = (String) context.getValue(annotationMap.get("Name"));
System.out.println(name);
但是如果我有 100 个或更多字段,这种方法会不会很乏味?有一个更好的方法吗?