使用JS在浏览器端验证HUGE xml

时间:2018-05-28 14:56:59

标签: javascript xml xsd web-worker progressive-web-apps

我需要在浏览器中验证一个非常庞大的XML(2GB)文件(在使用Web Workers的PWA应用程序中)。首先,必须使用XSD架构验证文件,然后必须将其转换为JSON对象。

我只是尝试使用FileReader和切片读取文件,我可以读取文件,但我无法验证它。

我首先尝试了以下内容(它适用于小文件(KB到某个MB)):

        xmlDoc = parser.parseFromString(content, "text/xml");            
        if (xmlDoc.getElementsByTagName("parsererror").length > 0) {
            isValid = false;
        }

然后我使用FileReader,这个工作正常:

    var r = new FileReader();
    var blob = _file.slice(_offset, length + _offset);
    r.onload = readEventHandler;
    r.readAsText(blob);

但现在我不知道如何使用这些切片来验证BIG xml。

是否有任何lib或内置JS函数才能实现它(最好使用vanilla JS)?还有其他想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你不能验证基于长度切片的XML,它不会在逻辑上结束或连接到下一个。

您可以尝试使用Web Workers验证整个xml版本,看看它是否有帮助。这将从主进程创建一个单独的线程。因此它不会中断您的用户交互或其他常规操作。

我不确定你的用例。但是依靠客户端进行如此庞大的操作并不总是可靠的。尤其是当客户端设备是低端硬件/过时的低性能浏览器时。在服务器端验证将是可靠的解决方案,可以理解的是带宽和服务器端负载的额外成本。