我需要在浏览器中验证一个非常庞大的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)?还有其他想法吗?
提前致谢。
答案 0 :(得分:0)
我认为你不能验证基于长度切片的XML,它不会在逻辑上结束或连接到下一个。
您可以尝试使用Web Workers验证整个xml版本,看看它是否有帮助。这将从主进程创建一个单独的线程。因此它不会中断您的用户交互或其他常规操作。
我不确定你的用例。但是依靠客户端进行如此庞大的操作并不总是可靠的。尤其是当客户端设备是低端硬件/过时的低性能浏览器时。在服务器端验证将是可靠的解决方案,可以理解的是带宽和服务器端负载的额外成本。