Анализ XML в веб-воркере

Я использовал объект DOMParser для синтаксического анализа текстовой строки в XML-дереве. Однако он недоступен в контексте веб-воркера (и, конечно же, не является document.ELEMENT_NODE или различными другими константами, которые могут потребоваться). Есть ли другой способ сделать это?

Обратите внимание, что я не хочу манипулировать DOM текущей страницы. XML-файл не будет содержать элементов HTML или чего-либо подобного. На самом деле я вообще не хочу трогать объект документа. Я просто хочу предоставить текстовую строку, подобную следующей:

<car color="blue"><driver/></car>

... и получите подходящую древовидную структуру и способ пройти по ней. Я также не забочусь о проверке схемы или о чем-то необычном. Я знаю о XML для ‹SCRIPT›, который многие могут считаю полезным (поэтому я ссылаюсь на него здесь), однако его лицензирование мне не подходит. Я не уверен, включает ли jQuery синтаксический анализатор XML (я новичок в этом материале), но даже если он есть (и его можно использовать внутри Worker), я бы не стал включать лишние ~ 50K строк кода только для эта функция.

Полагаю, я мог бы написать простой XML-анализатор на JavaScript, мне просто интересно, не хватает ли мне более быстрого варианта.


person user1127813    schedule 08.05.2012    source источник


Ответы (2)


согласно спецификации

API-интерфейсы DOM (объекты узла, объекты документа и т. Д.) Недоступны для рабочих в этой версии данной спецификации.

Я предполагаю, что именно поэтому DOMParser недоступен, но я действительно не понимаю, почему было принято это решение. (получение и обработка XML-документа в WebWorker не кажется необоснованным)

но вы можете импортировать другие доступные инструменты: "Межплатформенный анализ XML в JavaScript"

person Mathieu    schedule 25.06.2012
comment
Очевидно, некоторые браузеры, такие как Firefox, должны использовать основной поток в анализаторе XML, источник: w3-org.9356.n7.nabble.com/ - person Joren Van Severen; 07.08.2013
comment
Как ни печально, но xmljs очень медленный (по сравнению с DOMParser) - person SalientBrain; 27.12.2017

На этом этапе я хотел бы поделиться своим парсером: https://github.com/tobiasnickel/tXml

с помощью метода tXml () вы можете преобразовать строку в объект, и это займет всего 0,5 КБ minified + gzip

person Tobias Nickel    schedule 07.04.2015
comment
Будет ли этот tXml создавать тот же json, что и DOMParser, чтобы он мог заменить DOMParser обслуживающим работником? - person Corey Alix; 14.03.2020
comment
txml создает pojos (простые старые объекты js). у них есть тэг свойств (строка), атрибуты: (объект со значением ключа), дочерние элементы (массив дополнительных узлов.), поэтому вы не можете просто перетащить их в DOM вашего браузера. Но структуру также можно снова преобразовать в XML. - person Tobias Nickel; 20.08.2020