JSFiddle - React, Tailwind, and code Playground
by ajai jothi
HTML
<label for="">
Paste your XML Here
<textarea id="xml"></textarea>
<input type="button" id="processXML" value="Process">
</label>
<pre id="output"></pre>
CSS
textarea {
width: 100%;
height: 200px;
}
pre {
border: 1px solid #ddd;
background: #fff;
padding: 10px;
}
pre:before {
content: 'OUTPUT:';
display: block;
font-weight: bold;
padding-bottom: 5px;
}
JavaScript
function TX103(xml) {
var _parsers = [],
_stringReplacer = [],
self = this,
_xml = xml || null;
this.setXML = function(xml) {
if (typeof xml === 'string') {
var domParser = new DOMParser();
_xml = domParser.parseFromString(xml, "text/xml");
}
return this;
};
this.getXML = function() {
return xml;
};
this.addParser = function(parser) {
if (parser instanceof Array) {
_parsers = _parsers.concat(parser);
} else {
_parsers.push(parser);
}
return this;
};
this.findAndReplace = function(find, replace) {
_stringReplacer.push({
find: find,
replace: replace
});
return this;
};
this.execute = function() {
_parsers.forEach(function(parser) {
parser(_xml);
});
return this;
}
this.toXML = function() {
var domParser = new DOMParser();
_xml = domParser.parseFromString(self.toString(), "text/xml");
return _xml;
};
this.toString = function() {
var xmlStr = (new XMLSerializer()).serializeToString(_xml);
_stringReplacer.forEach(function(sp) {
xmlStr.replace(sp.find, sp.replace);
});
return xmlStr;
};
this.setXML(xml);
}
function createChild(xmlNode, tag, node, attr) {
var elm = xmlNode.createElement(tag);
attr = attr || {};
var _node = node;
if (typeof node === 'string') {
_node = xmlNode.createTextNode(node);
}
for (var a in attr) {
elm.setAttribute(a, attr[a]);
}
_node && elm.appendChild(_node);
return elm;
}
function insertPolicyNumber(xml) {
var pn = createChild(xml, 'PolNumber', '2342');
var lob = xml.querySelectorAll('Policy LineOfBusiness')[0];
lob.parentNode.insertBefore(pn, lob);
}
function insertSignatureInfo(xml) {
var signatureInfo = createChild(xml, 'SignatureInfo'),
signatureDate = createChild(xml, 'SignatureDate', JSON.stringify(new Date()).slice(1, 11)),
signatureState = createChild(xml, 'SignatureState', 'IL - Illinois', {
tc:...