Skip to content
Snippets Groups Projects
Commit ef980daa authored by langella's avatar langella
Browse files

give line number on sax parse error

git-svn-id: https://subversion.renater.fr/xtandempipeline/trunk@340 b8ef2a07-7df7-436f-90b9-41648038564b
parent dd1b4098
No related branches found
No related tags found
No related merge requests found
package fr.inra.pappso.xtandempipeline.MsException;
import org.apache.log4j.Logger;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class MyErrorHandler implements ErrorHandler {
private static final Logger logger = Logger.getLogger(MyErrorHandler.class);
public void warning(SAXParseException exception) throws SAXException {
// Bring things to a crashing halt
logger.warn("**Parsing Warning**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
// throw new SAXException("Warning encountered");
}
public void error(SAXParseException exception) throws SAXException {
// Bring things to a crashing halt
logger.error("**Parsing Error**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
// throw new SAXException("Error encountered");
}
public void fatalError(SAXParseException exception) throws SAXException {
// Bring things to a crashing halt
logger.fatal("**Parsing Fatal Error**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
System.out.println("**Parsing Fatal Error**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
throw new SAXException("ERROR at line " + exception.getLineNumber()
+ " column " + exception.getColumnNumber() + " : "
+ exception.getMessage());
}
}
\ No newline at end of file
......@@ -6,28 +6,23 @@ import java.io.InputStream;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
import org.apache.log4j.Logger;
import org.apache.xerces.impl.io.MalformedByteSequenceException;
import fr.inra.moulon.utils.MyErrorHandler;
import fr.inra.pappso.xtandempipeline.MsException.MSMSException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
public class parse_file {
private static final Logger logger = Logger.getLogger(parse_file.class);
private DefaultHandler handler;
private SAXParserFactory factory;
private SAXParser saxParser;
// private File file_to_parse;
public parse_file(DefaultHandler h, File f)
throws Exception {
public parse_file(DefaultHandler h, File f) throws Exception {
logger.debug("parse_file begin");
// on recupere le handler et le fichier à parser
this.handler = h;
......@@ -37,38 +32,38 @@ public class parse_file {
throw new MSMSException("The file "
+ file_to_parse.getAbsolutePath()
+ " doesn't exist : no parsing possible");
this.factory = SAXParserFactory.newInstance();
this.saxParser = factory.newSAXParser();
try {
InputStream inputStream = new FileInputStream(file_to_parse);
InputSource is = new InputSource(inputStream);
this.saxParser.parse(is, this.handler);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this.handler);
reader.setErrorHandler(new MyErrorHandler());
reader.parse(is);
} catch (MalformedByteSequenceException e) {
try {
logger.debug("Mauvais encodage");
InputStream inputStream = new FileInputStream(file_to_parse);
InputSource is = new InputSource(inputStream);
is.setEncoding("ISO-8859-1");
this.saxParser.parse(is, this.handler);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this.handler);
reader.setErrorHandler(new MyErrorHandler());
reader.parse(is);
} catch (Exception e2) {
throw e2;
}
} catch (SAXException e) {
logger
.error("Problems to parse xml file"
+ file_to_parse.getName());
logger.error("Problems to parse xml file" + file_to_parse.getName());
logger.error(e.getMessage());
StackTraceElement[] f1 = e.getStackTrace();
for (int i = 0; i < f1.length; i++) {
logger.error(f1[i]);
}
throw new MSMSException(file_to_parse.getName()
+ " is not a valid xml file:\n" + e.getMessage());
throw new MSMSException("Problem parsing file "
+ file_to_parse.getName() + " :\n" + e.getMessage());
} catch (Exception e) {
logger
.error("Problems to parse xml file"
+ file_to_parse.getName());
logger.error("Problems to parse xml file" + file_to_parse.getName());
logger.error(e.getMessage());
StackTraceElement[] f1 = e.getStackTrace();
for (int i = 0; i < f1.length; i++) {
......@@ -86,12 +81,15 @@ public class parse_file {
throw new MSMSException("handler is null");
}
this.handler = h;
this.factory = SAXParserFactory.newInstance();
this.saxParser = factory.newSAXParser();
try {
InputSource is = new InputSource(input);
this.saxParser.parse(is, this.handler);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this.handler);
reader.setErrorHandler(new MyErrorHandler());
reader.parse(is);
} catch (SAXParseException eSax) {
String message = "Error reading XML file : "
+ eSax.getCause().getMessage();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment