UNPKG

xgplayer-dash

Version:
142 lines (141 loc) 5.21 kB
import { createClass as _createClass, classCallCheck as _classCallCheck } from "../_virtual/_rollupPluginBabelHelpers.js"; var Xml2Json = /* @__PURE__ */ function() { function Xml2Json2() { _classCallCheck(this, Xml2Json2); } _createClass(Xml2Json2, null, [{ key: "parse", value: function parse(xmlDocStr) { var xmlDoc = Xml2Json2.parseXmlString(xmlDocStr); if (xmlDoc !== null && xmlDoc !== void 0) { return Xml2Json2.parseDOMChildren(xmlDoc); } else { return null; } } }, { key: "parseXmlString", value: function parseXmlString(xmlDocStr) { if (xmlDocStr === void 0) { return null; } var xmlDoc; var parser = new window.DOMParser(); try { xmlDoc = parser.parseFromString(xmlDocStr, "text/xml"); if (xmlDoc.getElementsByTagNameNS("*", "parsererror").length > 0) { xmlDoc = null; } } catch (err) { xmlDoc = null; } return xmlDoc; } }, { key: "parseDOMChildren", value: function parseDOMChildren(node, path) { if (node.nodeType === Node.DOCUMENT_NODE) { var result = {}; var nodeChildren = node.childNodes; for (var cidx = 0; cidx < nodeChildren.length; cidx++) { var child = nodeChildren[cidx]; if (child.nodeType === Node.ELEMENT_NODE) { result = Xml2Json2.parseDOMChildren(child); } } return result; } else if (node.nodeType === Node.ELEMENT_NODE) { var _result = {}; _result.__cnt = 0; var children = []; var _nodeChildren = node.childNodes; for (var _cidx = 0; _cidx < _nodeChildren.length; _cidx++) { var _child = _nodeChildren[_cidx]; var childName = Xml2Json2.getNodeLocalName(_child); if (_child.nodeType !== Node.COMMENT_NODE) { var childPath = path + "." + childName; _result.__cnt++; if (_result[childName] === null || _result[childName] === void 0) { var c = Xml2Json2.parseDOMChildren(_child, childPath); if (childName !== "#text" || /[^\s]/.test(c)) { var o = {}; o[childName] = c; children.push(o); } _result[childName] = c; Xml2Json2.toArrayAccessForm(_result, childName); } else { if (_result[childName] !== null && _result[childName] !== void 0) { if (!(_result[childName] instanceof Array)) { _result[childName] = [_result[childName]]; Xml2Json2.toArrayAccessForm(_result, childName, childPath); } } var _c = Xml2Json2.parseDOMChildren(_child, childPath); if (childName !== "#text" || /[^\s]/.test(_c)) { var _o = {}; _o[childName] = _c; children.push(_o); } _result[childName][_result[childName].length] = _c; } } } for (var aidx = 0; aidx < node.attributes.length; aidx++) { var attr = node.attributes[aidx]; _result.__cnt++; var value2 = attr.value; _result[attr.name] = value2; } var nodePrefix = node.prefix; if (nodePrefix !== null && nodePrefix !== void 0 && nodePrefix !== "") { _result.__cnt++; _result.__prefix = nodePrefix; } if (_result["#text"] !== null && _result["#text"] !== void 0) { _result.__text = _result["#text"]; if (_result.__text instanceof Array) { _result.__text = _result.__text.join("\n"); } delete _result["#text"]; delete _result["#text_asArray"]; } if (_result["#cdata-section"] !== null && _result["#cdata-section"] !== void 0) { _result.__cdata = _result["#cdata-section"]; delete _result["#cdata-section"]; delete _result["#cdata-section_asArray"]; } if (_result.__cnt === 1 && _result.__text !== null && _result.__text !== void 0) { _result = _result.__text; } else if (_result.__cnt === 1 && _result.__cdata !== null && _result.__cdata !== void 0) { _result = _result.__cdata; } delete _result.__cnt; return _result; } else if (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.CDATA_SECTION_NODE) { return node.nodeValue; } } }, { key: "getNodeLocalName", value: function getNodeLocalName(node) { var nodeLocalName = node.localName; if (nodeLocalName === null || nodeLocalName === void 0) { nodeLocalName = node.baseName; } if (nodeLocalName === null || nodeLocalName === void 0 || nodeLocalName === "") { nodeLocalName = node.nodeName; } return nodeLocalName; } }, { key: "toArrayAccessForm", value: function toArrayAccessForm(obj, childName) { if (!(obj[childName] instanceof Array)) { obj[childName] = [obj[childName]]; } } }]); return Xml2Json2; }(); export { Xml2Json as default };