Разбор XML в веб-рабочих - PullRequest
9 голосов
/ 03 февраля 2012

Я знаю, что спецификация Web Worker гласит: «Нет доступа к DOM, потому что DOM не является потокобезопасным».Хотя я вижу, что это логично для веб-работников и DOM-страницы HTML, на самом деле это очень ограничительно при рассмотрении синтаксического анализа XML из вызова XmlHttpRequest - в конце концов, базовая обработка этого вызова асинхронна и поэтому мало влияет на поток переднего плана, этосинтаксический анализ XML, который замедляет поток переднего плана (при работе с приложениями XML).

Есть ли другой способ, кроме создания моего собственного анализатора XML в Javascript (я не собираюсь идти по пути XPCOM!) вразбирать XML в Web Worker?

1 Ответ

13 голосов
/ 04 февраля 2012

Гм - отвечая себе через несколько часов - но это может быть часть информации, которая оказывается очень полезной для людей:

Существует полнофункциональный синтаксический анализатор XML с открытым исходным кодом, полностью написанный на javascript -и он очень хорошо работает в Web Workers:

XML-JS

По сути, вам просто нужно включить tinyxmlsax.js и tinyxmlw3cdom.js в вашего работника, а затем выполнитьдокумент для использования W3C DOM.

С очень небольшим массажем я получил свой код для работы как с обычным DOMParser (для работы на переднем плане), так и с анализатором xmljs.

Очевидно,он медленнее - но на самом деле это не слишком большая проблема - в конце концов, вы запускаете его в фоновом режиме!

...