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

时间:2013-11-04 16:23:03

标签: 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);

2 个答案:

答案 0 :(得分:2)

查看有关Marco Tedone的XML解组的文章,请参阅here。基于他,你可以看到Stax

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(fileInputStream);
Validator validator = schema.newValidator();
validator.validate(new StAXSource(xmlStreamReader));

答案 1 :(得分:1)

看看这个stackoverflow topic。 写道:

  

您不应该使用DOMParser来验证文档(除非您的   目标是无论如何创建文档对象模型)。这将开始   在解析文档时创建DOM对象 - 如果你这样做会浪费   不打算用它们。

也许它会有用!