Итак, у меня есть большое количество файлов XML.В течение многих лет они создавали проблемы, потому что люди, которые их пишут, делают их вручную, поэтому ошибки естественно возникали.Пора нам приступить к их проверке и предоставлению отзывов о том, что не так при попытке использовать эти XML-файлы.
Я использую парсер SAX и получаю список ошибок.
Нижемой код
BookValidationErrorHandler errorHandler = new BookValidationErrorHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
SchemaFactory schemaFactory =
SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
factory.setSchema(schemaFactory.newSchema(
new Source[] {new StreamSource("test.xsd")}));
javax.xml.parsers.SAXParser parser = factory.newSAXParser();
org.xml.sax.XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(errorHandler);
reader.parse(new InputSource("bad.xml"));
Первая пара ошибок всегда:
Номер строки: 2: Документ недействителен: грамматика не найдена.Номер строки: 2: корневой элемент документа "credits", должен совпадать с корневым элементом DOCTYPE "null".
Мы не можем пойти и отредактировать эти тысячи файлов XML, которые необходимо проверить.
Что-нибудь, что я мог бы легко добавить к передней части источника, чтобы предотвратить это?Есть ли способ сказать парсеру игнорировать эти ошибки, связанные с DTD?Даже не уверен, что означает грамматика.Я вроде понимаю, что означает второй.