如何在Java中针对xsd提高速度大xml验证?

toy*_*toy 5 java xml validation xsd

我正在尝试针对XSD验证非常XML(~200MB).这花了将近3个小时.我不确定我在这里做错了什么?

    SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
    Schema schema = sf.newSchema(new File(this.productExtraInfoXsd));

    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    domFactory.setNamespaceAware(true);
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse(new File(filePath));

    DOMSource domSource = new DOMSource(doc);
    DOMResult result = new DOMResult();

    Validator validator = schema.newValidator();
    validator.validate(domSource, result);
Run Code Online (Sandbox Code Playgroud)

con*_*ner 3

查看 Marco Tedone 撰写的有关 XML 解组的文章,请参阅此处。根据他你可以看到 Stax

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(fileInputStream);
Validator validator = schema.newValidator();
validator.validate(new StAXSource(xmlStreamReader));
Run Code Online (Sandbox Code Playgroud)