java - 如何提高 Java 中针对 xsd 的大型 xml 验证速度?

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

最佳答案

查看这篇来自 Marco Tedone 的关于 XML 解码的文章,请参阅 here .基于他你可以看到Stax

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

关于java - 如何提高 Java 中针对 xsd 的大型 xml 验证速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772165/

相关文章:

java - 使用循环打印图案

java - XMLStreamReader 和 XMLEventReader 有什么区别?

php - 如何使用 PHP 将 XML 内容插入 mysql 数据库

java - 从 xml 中查找所有有效的 xpath

c# - 非常简单的 WPF 表单数据验证 - 怎么做?

java - 如何解析下面的xml代码?

java - 如何恢复 Android 中的 Activity ?

java - 生成的 XSD 不会解码 XML

c# - 未触发 TryValidateObject 和 IValidatableObject

Javascript:使用 a∨(b∧c∧d) 进行表单验证