我有一个类似于
的字段的类@XmlElement(name = "Name", namespace = "a:b:c:1", required = true)
protected String firstName
我想像这样使用JXPath
String name = (String) context.getValue("Name");
但它没有识别XMLElement名称属性。有没有办法让它这样做?
答案 0 :(得分:0)
我不认为你可以。 JXPath允许使用标准bean get / is表示法导航bean层次结构,但不提供访问字段注释的方法。
我想你应该看看this answer re. finding annotations。也许您可以与JXPath解决方案结合使用?
答案 1 :(得分:0)
我按照Brian建议的那样做了
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个或更多的字段,这种方法会变得乏味吗?有更好的方法吗?