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

ブライアンが提案したように私はこれをしました

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 に答える
0

できないと思います。JXPath では、標準の Bean の get/is 表記を使用して Bean 階層をナビゲートできますが、フィールドの注釈にアクセスする手段は提供されません。

おそらくこの回答を再確認する必要があると思います。注釈を見つける。おそらく、JXPath ソリューションと組み合わせることができますか?

于 2014-11-15T14:57:57.600 に答える