所以我有大量的 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 相关的错误?甚至不确定语法一个是什么意思。我有点明白第二个是什么意思。