Parsing XML in Web Workers

2019-01-23 17:23发布

I know the Web Worker spec says "no access to DOM because DOM is not thread safe". While I can see that's logical for web workers and the HTML page DOM, it's actually very restrictive when considering parsing XML from an XmlHttpRequest call - after all, the basic handling of that call is asynchronous and so has little effect on the foreground thread, it's the parsing of the XML that slows down the foreground thread (when dealing with XML apps).

Is there any way other than building my own XML parser in Javascript (I'm not going the XPCOM route!) to parse XML in the Web Worker?

1条回答
做个烂人
2楼-- · 2019-01-23 18:08

Um - answering myself a few hours later - but this may well be a piece of information that proves very useful to people:

There IS an open-source, full function XML parser written entirely in javascript - and it works very well in Web Workers:

XML-JS

Basically, you just need to include tinyxmlsax.js and tinyxmlw3cdom.js in your worker, then follow the doc for using the W3C DOM.

With very little massaging, I got my code to work with both the normal DOMParser (for when running in the foreground) and the xmljs parser.

Obviously its slower - but that really isn't too much of an issue - after all, you're running it in the background!

查看更多
登录 后发表回答