zrender
Version:
A lightweight graphic library providing 2d draw for Apache ECharts
23 lines (20 loc) • 692 B
text/typescript
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;
}