0

我有一个看起来像这样的字段的类

@XmlElement(name = "Name", namespace = "a:b:c:1", required = true)
protected String firstName

我想像这样使用 JXPath

String name = (String) context.getValue("Name");

但它不识别 XMLElement name 属性。有没有办法让它这样做?

4

2 回答 2

0

我不认为你可以。JXPath 允许使用标准 bean get/is 表示法导航 bean 层次结构,但不提供访问字段注释的方法。

我想你也许应该看看这个答案。查找注释。也许您可以与 JXPath 解决方案结合使用?

于 2014-11-15T14:57:57.600 回答
0

我按照布赖恩的建议做了

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 个或更多字段,这种方法会不会很乏味?有一个更好的方法吗?

于 2014-11-15T15:33:47.637 回答