Java digester3中DigesterLoader.CreateMedigester(url)的替代项
确切地说,我的问题是,在新的Java digester3中DigesterLoader.CreateMedigester(url)的替代项,java,apache-commons-digester,Java,Apache Commons Digester,确切地说,我的问题是,在新的Digester3中,Digester.createLoader(url)的替代方法是什么 通用摘要:1.8.1代码 URL url; ClassLoader curClassLoader = this.getClass().getClassLoader(); url = curClassLoader.getResource("filepath"); if (url != null) { Diges
Digester3
中,Digester.createLoader(url)的替代方法是什么
通用摘要:1.8.1代码
URL url;
ClassLoader curClassLoader = this.getClass().getClassLoader();
url = curClassLoader.getResource("filepath");
if (url != null) {
Digester tempDigester = DigesterLoader.createDigester(url);
----
----
}
URL url;
ClassLoader curClassLoader = this.getClass().getClassLoader();
url = curClassLoader.getResource("filepath");
if (url != null) {
Digester tempDigester = ???;
----
----
}
现在我已经升级了commons-digester-1.8.1
到org.apcahe.commons.Digester3-3.2
,在新的jar中我没有看到任何方法是createDigester(ur)代码>
如何使用新API替换DigesterLoader.createDigester(url)
,以获得Digester对象作为回报
通用摘要:3.2代码
URL url;
ClassLoader curClassLoader = this.getClass().getClassLoader();
url = curClassLoader.getResource("filepath");
if (url != null) {
Digester tempDigester = DigesterLoader.createDigester(url);
----
----
}
URL url;
ClassLoader curClassLoader = this.getClass().getClassLoader();
url = curClassLoader.getResource("filepath");
if (url != null) {
Digester tempDigester = ???;
----
----
}
提前感谢。还没有检查1.8版本的具体功能,但是假设您的URL解析为基于XML的规则流,那么类似的操作应该可以实现:
import org.apache.commons.digester3.Digester;
import org.apache.commons.digester3.binder.DigesterLoader;
import org.apache.commons.digester3.binder.RulesModule;
import org.apache.commons.digester3.xmlrules.FromXmlRulesModule;
final URL url = curClassLoader.getResource("filepath");
RulesModule rules = new FromXmlRulesModule() {
@Override
protected void loadRules() {
loadXMLRules(url);
}
};
DigesterLoader loader = DigesterLoader.newLoader(rules);
Digester digester = loader.newDigester();
注意,您可能必须将URL设置为最终URL,才能在匿名子类中使用它
使用以下简单规则文件进行测试:
<?xml version='1.0'?>
<!DOCTYPE digester-rules PUBLIC '-//Apache Commons //DTD digester-rules XML V1.0//EN' 'http://commons.apache.org/digester/dtds/digester-rules-3.0.dtd'>
<digester-rules>
<pattern value='data'>
<object-create-rule classname='test.digester.BasicTest$ClassA'/>
<bean-property-setter-rule pattern='name' propertyname='name'/>
</pattern>
</digester-rules>
@PraveenKumarMekala为我提供了一个快速测试文件-您试图读取的xml规则的内容是什么?我正在深入研究我的异常并产生疑问,是否必须在我的xml文件中定义?@PraveenKumarMekala是的,DOCTYPE是必需的-请参阅上面的示例规则。你能发布一个你试图加载的规则文件的简单版本吗?@PraveenKumarMekala你的两个xml片段都没有结束标记——假设这只是一个剪切粘贴错误。添加了那些标签和一个DOCTYPE(根据前面的评论需要),然后加载对我来说很好,所以不确定该建议什么。异常的完整堆栈跟踪是什么?