我在使用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