Hows使用XSD Work进行XML验证?

时间:2012-12-21 11:07:59

标签: java xml xsd

  

可能重复:
  Validating XML against XSD

我正在使用此代码通过XSD验证我的XML

        DocumentBuilder parser = factory.newDocumentBuilder();

        // Parse the file. If errors found, they will be printed.
        parser.parse(args[1]);

但我想知道它是如何工作的,它会检查标签还是所有数据? 它有多可靠?

1 个答案:

答案 0 :(得分: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解析器都不支持:

了解更多信息

以下是我博客中使用此架构验证方法的示例的链接。在该示例中,使用JAXBSource而不是DOMSource,但其他所有内容都相同。