Comment obtenir de l'erreur du numéro de la ligne lors de la validation d'un fichier XML à l'encontre d'un schéma XML

Je suis en train de validade un XML à l'encontre d'un Schéma W3C XML.

Le code suivant fait le travail et les rapports quand l'erreur se produit. Mais je ne suis pas en mesure d'obtenir le numéro de ligne de l'erreur. Elle renvoie toujours -1.

Est-il un moyen facile d'obtenir le numéro de la ligne?

import java.io.File;

import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.w3c.dom.Document;
import org.xml.sax.SAXParseException;

    public class XMLValidation {

        public static void main(String[] args) {

            try {
                DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                Document document = parser.parse(new File("myxml.xml"));

                SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
                Source schemaFile = new StreamSource(new File("myschema.xsd"));

                Schema schema = factory.newSchema(schemaFile);

                Validator validator = schema.newValidator();

                validator.validate(new DOMSource(document));

            } catch (SAXParseException e) {
                System.out.println(e.getLineNumber());
                e.printStackTrace();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
Mads, que d'autres post concerne C#, pas de java.

OriginalL'auteur pablosaraiva | 2010-12-03