Пока нашел такой вариант из jsdom:
import {JSDOM} from 'jsdom';
declare module 'jsdom' {
/**
* В пакете jsdom есть реализация XMLSerializer, но пока не описана в типах.
*/
export interface DOMWindow {
XMLSerializer: {
prototype: XMLSerializer;
new(): XMLSerializer;
};
}
}
/**
* Такой вариант извлечения нужных классов для работы с XML DOM подсказан на странице
* https://stackoverflow.com/questions/11398419/trying-to-use-the-domparser-with-node-js
*/
const window = new JSDOM().window;
export const {Element, XPathResult, XMLSerializer} = window;
export const createDocument = window.document.implementation.createDocument.bind(window.document.implementation);
/**
* Извлечение массива с найденными узлами из XPathResult, который возвращает метод ownerDocument.evaluate().
* При условии, что последний аргумент evaluate был выставлен как XPathResult.*_SNAPSHOT_TYPE.
* @link https://developer.mozilla.org/en-US/docs/Web/API/XPathResult/snapshotItem
*/
export function getNodesFromXPathResult(result: XPathResult): Node[] {
let nodes: Node[] = [], node: Node | null, i = 0;
while (!!(node = result.snapshotItem(i++))) nodes.push(node);
return nodes;
}