2

可能重复:
针对 XSD 验证 XML

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

        DocumentBuilder parser = factory.newDocumentBuilder();

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

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

4

1 回答 1

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);
    }

}

或者,您可以调用setSchemaDocumentBuilderFactory以便在解析期间进行验证,但并非所有 DOM 解析器都支持:

了解更多信息

下面是我博客中使用此模式验证方法的示例的链接。在该示例中,使用 aJAXBSource而不是 a DOMSource,但其他一切都相同。

于 2012-12-21T11:32:30.727 回答