我在使用Digester时遇到问题,希望您能对我有所帮助。我有以下Bean:

public class MyEntry {
   private String entityID;

   public String getEntityID() { return this.entityID; }
   public void setEntityID(final String entityID) { this.entityID = entityID; }
}


以及以下XML结构:

<entries>
  <entry>
     <MyID>
        24309LAGH1
     </MyID>
  </entry>
</entries>


我使用摘要API的addSetNestedProperties(...)方法:

digester.addSetNestedProperties("entries/entry", "MyID", "entryID");


发生以下异常:

java.lang.NoSuchMethodException: Bean has no property named MyID


摘要器为什么要搜索名为“ MyID”的属性?我将摘要ID指定为“ entryID”作为bean属性

谢谢 :)

最好的祝福
暴风雨

最佳答案

[原版的]

您没有使用正确的规则来执行任务。

尝试使用此代替:

digester.addBeanPropertySetter("entries/entry/MyID", "entityID");


提示:例如,使用BasicConfigurator.configure();激活主目录中的log4j。输出可能非常有用。

[编辑]

如果要使用addSetNestedProperties

public class MyEntry {
   private String entityID;

   public String getEntityID() { return this.entityID; }
   public void setEntityID(final String entityID) { this.entityID = entityID; }
}


而对于new Digester().parse(myFile);

digester.addObjectCreate("entries/entry", MyEntry.class);
digester.addSetNestedProperties("entries/entry", "MyID", "entityID");
//your propertyName was not the same as in your Bean Class Fields.


并且我认为您的例外是:

java.lang.NoSuchMethodException: Bean has no property named entryID

07-26 03:21