我正在尝试针对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);
答案 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对象 - 如果你这样做会浪费 不打算用它们。
也许它会有用!