问一个sax解析xml的问题

oldearth 2004-08-26 11:08:23
最近在看一个开源的项目jasperreport,在jasperreport工程中,src.net.sf.jasperreports.engine.xml.jrXmlDigesterFactory.java文件中,configureDigester()方法:


public static void configureDigester(Digester digester)
throws SAXException, ParserConfigurationException
{
String validation = System.getProperty
("jasper.reports.compile.xml.validation");
if (validation == null || validation.length() == 0)
{
validation = "true";
}
boolean validating = Boolean.valueOf(validation).booleanvalue();

digester.setErrorHandler(new ErrorHandlerImpl());
digester.setValidating(validating);
digester.setFeature("http://xml.org/sax/features/validation", validating);

/* */
digester.addFactoryCreate("jasperReport", JasperDesignFactory.class.getName());
digester.addSetNext("jasperReport", "setJasperDesign", JasperDesign.class.getName());

/* */
digester.addCallMethod("jasperReport/property", "setProperty", 2);
digester.addCallParam("jasperReport/property", 0, "name");
digester.addCallParam("jasperReport/property", 1, "value");

/* */
digester.addFactoryCreate("jasperReport/reportFont", JRReportFontFactory.class.getName());
digester.addSetNext("jasperReport/reportFont", "addFont", JRReportFont.class.getName());


这一段解析的程序,都是什么意思。特别是addSetNext()方法里,里面三个参数都是什么?当我解析到同样的节点时候,jasperreport里的哪个类哪个方法响应。在jasperreport工程里,我一直没有找到响应的类和响应的方法。
...全文
158 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangqiao 2004-08-26
  • 打赏
  • 举报
回复
建议你看看这片文章,可以找得你要的答案:
http://www.theserverside.com/articles/article.tss?l=Digester
usabcd 2004-08-26
  • 打赏
  • 举报
回复
Digester是apache的一个通用的解析XML的组件,最初由struts项目剥离开来的。
放在commons子项目下。
http://jakarta.apache.org/commons/digester/
你查找下,网上有很多关于digester的用法的资料。

oldearth 2004-08-26
  • 打赏
  • 举报
回复
嗯。谢谢各位。
api和上面的那个链接的文章我都看过了。

如果按照那篇文章说的,addSetNext()这个方法是两个是两个参数,即把我原来的方法改成这样:
digester.addSetNext("jasperReport/reportFont", "addFont");
那么当再次解析到这个节点时候,就应该是调用jasperReport.java文件里的addFont()方法来响应添加节点。

而api里面,addSetNext()方法无论是两个参数还是三个参数,其说明,前面两个参数的含义都是一样的。

那么我看不懂的这个方法:

digester.addSetNext("jasperReport/reportFont", "addFont", JRReportFont.class.getName());
也是应该是,当再次解析到这个节点时候,就调用jasperReport.java文件里的addFont()方法来响应。

我现在在jasperReport.java里面找不到addFont()这个方法。

哪位知道。多指点。谢谢。
nwpulipeng 2004-08-26
  • 打赏
  • 举报
回复
查API

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧