Wie man Fehler - Zeilennummer während der Validierung einer XML-Datei gegen ein XML-schema
Ich versuche, validade ein XML gegen ein W3C XML-Schema.
Dem folgenden code macht den job, und berichten wenn der Fehler Auftritt. Aber ich bin nicht in der Lage zu Holen Sie sich die Zeilennummer des Fehlers. Es gibt immer -1.
Gibt es eine einfache Möglichkeit, um die Zeilennummer zu erhalten?
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();
}
}
}
InformationsquelleAutor der Frage pablosaraiva | 2010-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich diese
http://www.herongyang.com/XML-Schema/Xerces2-XSD-Validation-with-XMLReader.html
angezeigt wird, geben Sie die folgenden details(mit Zeilennummern)
mithilfe dieses Codes:
InformationsquelleAutor der Antwort Mads Hansen
Versuchen Sie es mit einem SAXLocator
http://download.oracle.com/javase/1.5.0/docs/api/org/xml/sax/Locator.html
Parser sind nicht erforderlich, um zu liefern, aber wenn Sie es tun, sollte der Bericht Zeilennummern
Ich denke, der code sollte beinhalten:
(siehe http://www.java-tips.org/java-se-tips/org.xml.sax/using-xml-locator-to-indicate-current-parser-pos.html)
Den parser geben Sie einen locator, die Sie dann verwenden können, um die Zeilennummer zu erhalten. Es ist wohl Wert drucken/Debuggen, wenn dies geschieht, um zu sehen, wenn Sie eine gültige locator
InformationsquelleAutor der Antwort peter.murray.rust
Können Sie einfach fangen ein
SaxException e
. Und dann rufen Siee.toString()
Es gebe so etwas wie :
InformationsquelleAutor der Antwort alain.janinm