xgplayer-dash
Version:
xgplayer plugin for MPEG-DASH
142 lines (141 loc) • 5.21 kB
JavaScript
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 };