问一个sax解析xml的问题
最近在看一个开源的项目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工程里,我一直没有找到响应的类和响应的方法。
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工程里,我一直没有找到响应的类和响应的方法。
...全文
相关推荐
SAX解析超大XML文件 示例代码
为了解决这个问题,我们可以采用流式解析的方式,比如SAX(Simple API for XML)。SAX解析器逐行读取XML文件,只在需要时处理数据,显著降低了内存需求。
解析XML所需的jar sax.jar
**开始解析**:使用`XMLReader`的`parse()`方法开始解析XML文档,传入一个`InputSource`对象,该对象可以指定XML文档的输入源,如文件路径或URL。6.
一个关于sax解析xml的demo
在"一个关于sax解析xml的demo"中,我们可能会看到以下步骤:1. 引入SAX解析器的相关库,如Java中的`org.xml.sax.*`包。2.
SAX解析XML文件实例
本文详细介绍了使用SAX解析XML文件的过程,重点讲解了startDocument()和startElement()方法在解析开始和遇到根节点时的调用机制,以及节点名的获取方式。
Sax解析XML文件解析
**设置事件处理器**:通过`SAXParser`的`setHandler`方法设置一个实现了`ContentHandler`接口的对象,这个对象将处理SAX解析过程中触发的事件。3.


