可能重复:
针对 XSD 验证 XML
我正在使用此代码通过 XSD 验证我的 XML
DocumentBuilder parser = factory.newDocumentBuilder();
// Parse the file. If errors found, they will be printed.
parser.parse(args[1]);
但我想知道它是如何工作的,它会检查标签还是所有数据?它有多可靠?
可能重复:
针对 XSD 验证 XML
我正在使用此代码通过 XSD 验证我的 XML
DocumentBuilder parser = factory.newDocumentBuilder();
// Parse the file. If errors found, they will be printed.
parser.parse(args[1]);
但我想知道它是如何工作的,它会检查标签还是所有数据?它有多可靠?
您可以执行以下操作,在文档被解析后,根据 XML 模式验证生成的 DOM。您可以设置一个实例,ErrorHandler
以便您可以选择如何处理验证错误。
public class Demo {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(args[1]);
DOMSouce source = new DOMSource(document);
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("customer.xsd"));
Validator validator = schema.newValidator();
validator.setErrorHandler(new MyErrorHandler());
validator.validate(source);
}
}
或者,您可以调用setSchema
,DocumentBuilderFactory
以便在解析期间进行验证,但并非所有 DOM 解析器都支持:
了解更多信息
下面是我博客中使用此模式验证方法的示例的链接。在该示例中,使用 aJAXBSource
而不是 a DOMSource
,但其他一切都相同。