首页javaxml_schemaJava HTML/XML - 如何在根据XML模式验证XML文件时获取错误的行号

Java HTML/XML - 如何在根据XML模式验证XML文件时获取错误的行号

我们想知道如何在根据XML模式验证XML文件时获取错误的行号。
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;

public class Main {
  public static void main(String[] args) throws Exception {
    String parserClass = "org.apache.xerces.parsers.SAXParser";
    String validationFeature = "http://xml.org/sax/features/validation";
    String schemaFeature = "http://apache.org/xml/features/validation/schema";
    String x = args[0];
    XMLReader r = XMLReaderFactory.createXMLReader(parserClass);
    r.setFeature(validationFeature, true);
    r.setFeature(schemaFeature, true);
    r.setErrorHandler(new MyErrorHandler());
    r.parse(x);
  }
}
class MyErrorHandler extends DefaultHandler {
  public void warning(SAXParseException e) throws SAXException {
    printInfo(e);
  }

  public void error(SAXParseException e) throws SAXException {
    printInfo(e);
  }

  public void fatalError(SAXParseException e) throws SAXException {
    printInfo(e);
  }
  private void printInfo(SAXParseException e) {
    System.out.println("   Public ID: " + e.getPublicId());
    System.out.println("   System ID: " + e.getSystemId());
    System.out.println("   Line number: " + e.getLineNumber());
    System.out.println("   Column number: " + e.getColumnNumber());
    System.out.println("   Message: " + e.getMessage());
  }
}