use of org.talend.xml.sax.SAXLoopCompositeHandler in project tdi-studio-se by Talend.
the class SimpleSAXLooper method call.
public Object call() throws Exception {
Reader reader = null;
try {
DefaultHandler handler = null;
if (nodesList.size() > 0) {
SAXLoopCompositeHandler chd = new SAXLoopCompositeHandler();
for (int i = 0; i < nodesList.size(); i++) {
XMLNodes ns = nodesList.get(i);
chd.register(new SimpleSAXLoopHandler(ns, multiCache));
}
handler = chd;
} else {
hd = new SimpleSAXLoopHandler(nodes, bcache);
handler = hd;
}
SAXParser saxParser = null;
if (!ignoreDTD) {
//orginal code
saxParser = SAXParserFactory.newInstance().newSAXParser();
} else {
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
saxParser = spf.newSAXParser();
}
saxParser.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
if (fileURL != null) {
// routines.system.UnicodeReader.java is used to ignore the BOM of the source file.
reader = new UnicodeReader(new java.io.FileInputStream(fileURL), this.charset);
org.xml.sax.InputSource inSource = new org.xml.sax.InputSource(reader);
saxParser.parse(inSource, handler);
} else {
reader = new UnicodeReader(is, this.charset);
org.xml.sax.InputSource inSource = new org.xml.sax.InputSource(reader);
saxParser.parse(inSource, handler);
}
} finally {
try {
if (reader != null) {
reader.close();
}
} finally {
if (multiCache != null) {
multiCache.notifyErrorOccurred();
}
if (bcache != null) {
bcache.notifyErrorOccurred();
}
}
}
return null;
}
Aggregations