如何使jxpath读取@xmlelement name属性而不是实际的字段名?

时间:2014-11-15 14:54:47

标签: java jxpath

我有一个类似于

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

我想像这样使用JXPath

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

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

2 个答案:

答案 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个或更多的字段,这种方法会变得乏味吗?有更好的方法吗?