mh-two-thousand-and-two
2024-03-25 b8c93990f3fa5e50a8aca16bdc9c2758168aa0fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { isString } from '../core/util';
 
/**
 * For big svg string, this method might be time consuming.
 */
export function parseXML(svg: Document | string | SVGElement): SVGElement {
    if (isString(svg)) {
        const parser = new DOMParser();
        svg = parser.parseFromString(svg, 'text/xml');
    }
    let svgNode: Node = svg;
    // Document node. If using $.get, doc node may be input.
    if (svgNode.nodeType === 9) {
        svgNode = svgNode.firstChild;
    }
    // nodeName of <!DOCTYPE svg> is also 'svg'.
    while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {
        svgNode = svgNode.nextSibling;
    }
 
    return svgNode as SVGElement;
}