6

我正在尝试针对 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);
4

2 回答 2

3

查看 Marco Tedone 的这篇关于 XML 解组的文章,请参见此处。根据他你可以看到 Stax

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(fileInputStream);
Validator validator = schema.newValidator();
validator.validate(new StAXSource(xmlStreamReader));
于 2013-11-04T16:35:12.170 回答
2

看看这个stackoverflow 主题。这里写着:

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

也许会有用!

于 2013-11-04T16:59:51.107 回答