{"id":25517711,"url":"https://github.com/manuel-lohmus/xml-obj","last_synced_at":"2026-04-28T18:06:18.428Z","repository":{"id":57401815,"uuid":"346811753","full_name":"manuel-lohmus/xml-obj","owner":"manuel-lohmus","description":"A convertor between js object and  XML. XML.querySelector() is supported.","archived":false,"fork":false,"pushed_at":"2021-12-06T22:50:43.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T07:33:53.769Z","etag":null,"topics":["cdata","convert-js","javascript","json","object","parse","query","selector","stringify","xml","xml-js","xml-json"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manuel-lohmus.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-11T19:18:08.000Z","updated_at":"2021-12-06T22:50:47.000Z","dependencies_parsed_at":"2022-09-15T18:41:06.021Z","dependency_job_id":null,"html_url":"https://github.com/manuel-lohmus/xml-obj","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuel-lohmus%2Fxml-obj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuel-lohmus%2Fxml-obj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuel-lohmus%2Fxml-obj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuel-lohmus%2Fxml-obj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manuel-lohmus","download_url":"https://codeload.github.com/manuel-lohmus/xml-obj/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239684967,"owners_count":19680224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cdata","convert-js","javascript","json","object","parse","query","selector","stringify","xml","xml-js","xml-json"],"created_at":"2025-02-19T15:37:18.020Z","updated_at":"2025-12-15T21:30:14.337Z","avatar_url":"https://github.com/manuel-lohmus.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\u003chead\u003e\n    \u003ctitle\u003exml-obj: XML library for browser and node.js\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\n    \u003ch1 id=\"xml-obj-xml-library-for-browser-and-node.js\"\u003exml-obj: XML library for browser and node.js\u003c/h1\u003e\n    \u003cp\u003e\n        \u003ca href=\"https://www.npmjs.com/package/xml-obj\"\u003e\u003cimg src=\"https://badgen.net/npm/v/xml-obj\" alt=\"npm-version\" /\u003e\u003c/a\u003e\n        \u003ca href=\"https://www.npmjs.com/package/xml-obj\"\u003e\u003cimg src=\"https://badgen.net/npm/dw/xml-obj\" alt=\"npm-week-downloads\" /\u003e\u003c/a\u003e\n    \u003c/p\u003e\n    \u003cp\u003e\n        'xml-obj' is a simple to use.\n        Converting XML to an object is available in the browser and node.js.\n        XML.querySelector() is supported.\n    \u003c/p\u003e\n    \u003ch2 id=\"installing\"\u003eInstalling\u003c/h2\u003e\n    \u003cp\u003e\u003ccode\u003enpm install xml-obj\u003c/code\u003e\u003c/p\u003e\n    \u003ch2 id=\"usage-example-for-node.js\"\u003eUsage example for node.js\u003c/h2\u003e\n\u003cpre\u003e\u003ccode class=\"language-js\"\u003e'use strict';\n\nvar XML = require('xml-obj');\n\nvar strXml = `\n\u0026lt;?xml version=\u0026quot;1.0\u0026quot; encoding=\u0026quot;utf-8\u0026quot; ?\u0026gt;\n\u0026lt;root id=\u0026quot;abc \u0026amp;lt;\u0026amp;quot;\u0026amp;amp;\u0026amp;apos;\u0026amp;gt;\u0026quot;\u0026gt;\n\t\u0026lt;et\u0026gt;Eesti\u0026lt;/et\u0026gt;\n\ttext\t\n\t\u0026lt;![CDATA[123]]\u0026gt;\n\u0026lt;/root\u0026gt;\n\u0026lt;!-- comment nodes may appear almost anywhere --\u0026gt;\n`;\nvar objXml = XML.parse(strXml);\n\nvar val = objXml.querySelector('et');\nconsole.log('val: ' + val);\n\nvar strJson = JSON.stringify(objXml, null, 2);\nconsole.log('strJson: ' + strJson);\n\u003c/code\u003e\u003c/pre\u003e\n    \u003cp\u003eoutput:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-console\"\u003eval: Eesti\nstrJson: {\n  \u0026quot;@innerXML\u0026quot;: [\n    {\n      \u0026quot;root\u0026quot;: {\n        \u0026quot;@innerXML\u0026quot;: [\n          {\n            \u0026quot;et\u0026quot;: \u0026quot;Eesti\u0026quot;\n          },\n          {\n            \u0026quot;@text\u0026quot;: \u0026quot;\\ttext\\t\\n\\t\u0026quot;\n          },\n          {\n            \u0026quot;@cdata\u0026quot;: \u0026quot;123\u0026quot;\n          }\n        ],\n        \u0026quot;-id\u0026quot;: \u0026quot;abc \u0026lt;\\\u0026quot;\u0026amp;'\u0026gt;\u0026quot;\n      }\n    },\n    {\n      \u0026quot;@comment\u0026quot;: \u0026quot; comment nodes may appear almost anywhere \u0026quot;\n    }\n  ],\n  \u0026quot;-version\u0026quot;: \u0026quot;1.0\u0026quot;,\n  \u0026quot;-encoding\u0026quot;: \u0026quot;utf-8\u0026quot;\n}\n\u003c/code\u003e\u003c/pre\u003e\n    \u003ch2 id=\"usage-example-for-browser\"\u003eUsage example for browser\u003c/h2\u003e\n\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;!DOCTYPE html\u0026gt;\n\n\u0026lt;html xmlns=\u0026quot;http://www.w3.org/1999/xhtml\u0026quot;\u0026gt;\n\u0026lt;head\u0026gt;\n    \u0026lt;meta charset=\u0026quot;utf-8\u0026quot; /\u0026gt;\n    \u0026lt;title\u0026gt;XML Test Page\u0026lt;/title\u0026gt;\n    \u0026lt;script type=\u0026quot;text/javascript\u0026quot;\u0026gt;\n/** XML-OBJ functions for JavaScript and node.js. @preserve Copyright (c) 2020 Manuel L�hmus.*/\n(function(n){function i(n){var t,i,r;if(typeof n==\u0026quot;string\u0026quot;){for(t=\u0026quot;\u0026quot;,i=0;i\u0026lt;n.length;i++){r=n.charCodeAt(i);switch(r){case 34:t+=\u0026quot;\u0026amp;quot;\u0026quot;;break;case 38:t+=\u0026quot;\u0026amp;amp;\u0026quot;;break;case 39:t+=\u0026quot;\u0026amp;apos;\u0026quot;;break;case 60:t+=\u0026quot;\u0026amp;lt;\u0026quot;;break;case 62:t+=\u0026quot;\u0026amp;gt;\u0026quot;;break;default:t+=n.charAt(i)}}return t}return n}function t(n){var i,t,u,f,r;if(typeof n==\u0026quot;string\u0026quot;){for(i=\u0026quot;\u0026quot;,t=0;t\u0026lt;n.length;t++)if(u=n.charAt(t),u===\u0026quot;\u0026amp;\u0026quot;){for(f=\u0026quot;\u0026quot;,r=t;++r\u0026lt;n.length\u0026amp;\u0026amp;f.length\u0026lt;16\u0026amp;\u0026amp;n.charAt(r)!==\u0026quot;;\u0026quot;;)f+=n.charAt(r);switch(f){case\u0026quot;nbsp\u0026quot;:i+=\u0026quot; \u0026quot;;t=r;break;case\u0026quot;quot\u0026quot;:i+='\u0026quot;';t=r;break;case\u0026quot;amp\u0026quot;:i+=\u0026quot;\u0026amp;\u0026quot;;t=r;break;case\u0026quot;apos\u0026quot;:i+=\u0026quot;'\u0026quot;;t=r;break;case\u0026quot;lt\u0026quot;:i+=\u0026quot;\u0026lt;\u0026quot;;t=r;break;case\u0026quot;gt\u0026quot;:i+=\u0026quot;\u0026gt;\u0026quot;;t=r;break;default:i+=u}}else i+=u;return i}return n}function s(n,t){var i=null,f;return typeof n==\u0026quot;string\u0026quot;\u0026amp;\u0026amp;(f=h(n,t),f\u0026amp;\u0026amp;(i=u(f))),i.querySelector=function(n){return o(i,n)},i.querySelectorAll=function(n){return r(i,n)},i}function u(n){var t=null,e,r,i,o,f;if(n\u0026amp;\u0026amp;n.name){if(e=n.children?n.children.filter(function(n){return n\u0026amp;\u0026amp;n.name[0]===\u0026quot;@\u0026quot;}):[],e.length===1\u0026amp;\u0026amp;n.children.length===1)n.attributes\u0026amp;\u0026amp;n.attributes.length?(t={},t[n.children[0].name]=n.children[0].value):n.children[0].name===\u0026quot;@text\u0026quot;?t=n.children[0].value:(t={},t[n.children[0].name]=n.children[0].value);else if(n.isEmpty)t=\u0026quot;\u0026quot;;else if(n.children\u0026amp;\u0026amp;n.children.length)for(t={},r=0;r\u0026lt;n.children.length;r++)i=n.children[r].name,e.length\u0026gt;0?(t[\u0026quot;@innerXML\u0026quot;]||(t[\u0026quot;@innerXML\u0026quot;]=[]),i?(o={},o[i]=u(n.children[r]),t[\u0026quot;@innerXML\u0026quot;].push(o)):t[\u0026quot;@innerXML\u0026quot;].push(n.children[r])):t[i]?Array.isArray(t[i])?t[i].push(u(n.children[r])):(t[i]=[t[i]],t[i].push(u(n.children[r]))):t[i]=u(n.children[r]);else n.value\u0026amp;\u0026amp;(t={},t=n.value);if(n.attributes\u0026amp;\u0026amp;n.attributes.length\u0026gt;0)for(t\u0026amp;\u0026amp;typeof t==\u0026quot;object\u0026quot;||(t={}),f=0;f\u0026lt;n.attributes.length;f++)t[\u0026quot;-\u0026quot;+n.attributes[f].name]=n.attributes[f].value}return t}function h(n,t){var i;return i=w(n),i||(i=c(n),i||(i=l(n),i||(i=a(n,t)))),i}function w(n){var f,u,r;if(n\u0026amp;\u0026amp;(f=n.indexOf(\u0026quot;\u0026lt;\u0026quot;)-1,f\u0026lt;-1\u0026amp;\u0026amp;(f=n.length-1),f\u0026gt;-1\u0026amp;\u0026amp;(u=n.substr(0,f+1),u=t(u),u\u0026amp;\u0026amp;u.trim()))){function e(n){while(n[0]===\u0026quot;\\n\u0026quot;||n[0]===\u0026quot;\\r\u0026quot;)n=n.substr(1);while(n.length\u0026amp;\u0026amp;(n[n.length-1]===\u0026quot;\\n\u0026quot;||n[n.length-1]===\u0026quot;\\r\u0026quot;))n=n.substr(0,n.length-1);return n}return r={name:\u0026quot;@text\u0026quot;,value:e(u)},Object.defineProperty(r,\u0026quot;innerXml\u0026quot;,{get:function(){return i(r.value)},set:function(n){r.value=t(n)}}),Object.defineProperty(r,\u0026quot;outerXml\u0026quot;,{get:function(){return i(r.value)},set:function(n){r.value=t(n)}}),r.followingXml=function(){var t=n.indexOf(\u0026quot;\u0026lt;\u0026quot;);return t\u0026gt;-1?n.substr(t):\u0026quot;\u0026quot;},r}}function c(n){var r,e,t;if(n\u0026amp;\u0026amp;(r=n.indexOf(\u0026quot;\u0026lt;\u0026quot;),r\u0026gt;-1\u0026amp;\u0026amp;n.substr(r,9)===\u0026quot;\u0026lt;![CDATA[\u0026quot;)){var f=n.indexOf(\u0026quot;]\\]\u0026gt;\u0026quot;),i=r+9,u=n.indexOf(\u0026quot;]\\]\u0026gt;\u0026quot;)-i;if(u=f\u0026lt;0?n.length-1-i:f-i,i+u+2\u0026lt;n.length)return e=n.substr(i,u),t={name:\u0026quot;@cdata\u0026quot;,value:e},Object.defineProperty(t,\u0026quot;innerXml\u0026quot;,{get:function(){return t.value},set:function(n){t.value=n}}),Object.defineProperty(t,\u0026quot;outerXml\u0026quot;,{get:function(){return\u0026quot;\u0026lt;![CDATA[\u0026quot;+t.value+\u0026quot;]\\]\u0026gt;\u0026quot;},set:function(n){t.value=new c(n).value}}),t.followingXml=function(){var t=n.indexOf(\u0026quot;]\\]\u0026gt;\u0026quot;);return t\u0026lt;0?\u0026quot;\u0026quot;:n.substr(t+3)},t}}function l(n){var i,e,t;if(n\u0026amp;\u0026amp;(i=n.indexOf(\u0026quot;\u0026lt;\u0026quot;),i\u0026gt;-1\u0026amp;\u0026amp;n.substr(i,4)===\u0026quot;\u0026lt;!--\u0026quot;)){var u=n.indexOf(\u0026quot;--\u0026gt;\u0026quot;),r=i+4,f=u\u0026lt;0?n.length-1-r:u-r;if(r+f+2\u0026lt;n.length)return e=n.substr(r,f),t={name:\u0026quot;@comment\u0026quot;,value:e},Object.defineProperty(t,\u0026quot;innerXml\u0026quot;,{get:function(){return t.value},set:function(n){t.value=n}}),Object.defineProperty(t,\u0026quot;outerXml\u0026quot;,{get:function(){return\u0026quot;\u0026lt;!--\u0026quot;+t.value+\u0026quot;--\u0026gt;\u0026quot;},set:function(n){t.value=new l(n).value}}),t.followingXml=function(){var t=n.indexOf(\u0026quot;--\u0026gt;\u0026quot;);return t\u0026lt;0?\u0026quot;\u0026quot;:n.substr(t+3)},t}}function a(n,t){var i,o,u,f,s,r,c,e;return n\u0026amp;\u0026amp;(o=n.indexOf(\u0026quot;\u0026lt;\u0026quot;),u=n.indexOf(\u0026quot;\u0026gt;\u0026quot;,o),u\u0026gt;-1\u0026amp;\u0026amp;(i={},f=n.substr(o,u-o+1).trim(),i.isEmpty=f.substr(f.length-2)===\u0026quot;/\u0026gt;\u0026quot;,f=b(f),s=f.split(\u0026quot; \u0026quot;),i.name=s.shift(),i.attributes=k(s.join(\u0026quot; \u0026quot;)),i.isEmpty||(c=v(n,i.name),i.name===\u0026quot;?xml\u0026quot;?r=n.substr(u+1):c\u0026gt;-1?(r=n.substr(u+1,c-u-1),i.isEmpty=!r):i.isEmpty=null),Object.defineProperty(i,\u0026quot;innerXml\u0026quot;,{get:function(){for(var t=\u0026quot;\u0026quot;,n=0;n\u0026lt;i.children.length;n++)t+=i.children[n].outerXml;return t},set:function(n){n!==r\u0026amp;\u0026amp;(r=n,e=undefined)}}),Object.defineProperty(i,\u0026quot;outerXml\u0026quot;,{get:function(){var n=\u0026quot;\u0026quot;,t,u,r,f;if(i.name===\u0026quot;xml\u0026quot;){for(n+=\u0026quot;\u0026lt;?\u0026quot;+i.name,t=0;t\u0026lt;i.attributes.length;t++)n+=\u0026quot; \u0026quot;+i.attributes[t].name+'=\u0026quot;'+i.attributes[t].value+'\u0026quot;';for(n+=\u0026quot;?\u0026gt;\u0026quot;,u=0;u\u0026lt;i.children.length;u++)n+=i.children[u].outerXml}else{for(n+=\u0026quot;\u0026lt;\u0026quot;+i.name,r=0;r\u0026lt;i.attributes.length;r++)n+=\u0026quot; \u0026quot;+i.attributes[r].name+'=\u0026quot;'+i.attributes[r].value+'\u0026quot;';if(i.isEmpty===null)n+=\u0026quot;\u0026gt;\u0026quot;;else if(i.isEmpty)n+=\u0026quot;/\u0026gt;\u0026quot;;else{for(n+=\u0026quot;\u0026gt;\u0026quot;,f=0;f\u0026lt;i.children.length;f++)n+=i.children[f].outerXml;n+=\u0026quot;\u0026lt;\\/\u0026quot;+i.name+\u0026quot;\u0026gt;\u0026quot;}}return n},set:function(n){var t=a(n);t\u0026amp;\u0026amp;(i.name=t.name,i.attributes=t.attributes,i.innerXml=t.innerXml)}}),Object.defineProperty(i,\u0026quot;children\u0026quot;,{get:function(){if(!e){e=[];for(var n;r\u0026amp;\u0026amp;(n=h(r));)n.name===\u0026quot;@comment\u0026quot;\u0026amp;\u0026amp;t||(n.parent=i,e.push(n)),r=n.followingXml()}return e}}),i.followingXml=function(){var t=v(n,i.name,!0);return n.substr(t)})),i}function b(n){return typeof n==\u0026quot;string\u0026quot;?(n[0]===\u0026quot;\u0026lt;\u0026quot;\u0026amp;\u0026amp;(n=n.substr(1)),n[0]===\u0026quot;!\u0026quot;\u0026amp;\u0026amp;(n=n.substr(1)),n[n.length-1]===\u0026quot;\u0026gt;\u0026quot;\u0026amp;\u0026amp;(n=n.substr(0,n.length-1)),n[n.length-1]===\u0026quot;?\u0026quot;\u0026amp;\u0026amp;(n=n.substr(0,n.length-1)),n[n.length-1]===\u0026quot;/\u0026quot;\u0026amp;\u0026amp;(n=n.substr(0,n.length-1)),n[0]===\u0026quot;-\u0026quot;\u0026amp;\u0026amp;n[1]===\u0026quot;-\u0026quot;\u0026amp;\u0026amp;n[n.length-2]===\u0026quot;-\u0026quot;\u0026amp;\u0026amp;n[n.length-1]===\u0026quot;-\u0026quot;\u0026amp;\u0026amp;(n=n.substr(2,n.length-4)),n):\u0026quot;\u0026quot;}function v(n,t,i){for(var f=[],u=-1,r=n.indexOf(\u0026quot;\u0026lt;\u0026quot;+t)+1+t.length;(r=n.indexOf(t,r))\u0026gt;-1;){if(r\u0026gt;1\u0026amp;\u0026amp;n[r-2]===\u0026quot;\u0026lt;\u0026quot;\u0026amp;\u0026amp;n[r-1]===\u0026quot;/\u0026quot;)if(f.length===0){u=r-2;break}else f.pop();else n[r-1]===\u0026quot;\u0026lt;\u0026quot;\u0026amp;\u0026amp;n[n.indexOf(\u0026quot;\u0026gt;\u0026quot;,r)-1]!==\u0026quot;/\u0026quot;\u0026amp;\u0026amp;f.push(r);r+=t.length}return i\u0026amp;\u0026amp;(u=u\u0026lt;0?n.indexOf(\u0026quot;\u0026gt;\u0026quot;)+1:n.indexOf(\u0026quot;\u0026gt;\u0026quot;,u)+1),u}function k(n){for(var t=n.split(/\u0026quot;\\s/),r=[],i;t.length;)i=d(t[0]),t.shift(),i\u0026amp;\u0026amp;r.push(i);return r}function d(n){var r,u,i;return typeof n==\u0026quot;string\u0026quot;\u0026amp;\u0026amp;(r=n.split(\u0026quot;=\u0026quot;),r[0])?(u={},u.name=r[0].trim(),i=r[1]?r[1].trim():null,i\u0026amp;\u0026amp;(i=i[0]==='\u0026quot;'||i[0]===\u0026quot;'\u0026quot;?i.substr(1):i,i=i[i.length-1]==='\u0026quot;'||i[i.length-1]===\u0026quot;'\u0026quot;?i.substr(0,i.length-1):i),u.value=t(i),u):null}function g(n,t,i,r,u){return f(n,t,i,r,u).join(\u0026quot;\u0026quot;)}function y(n,t,i,r,u){var e,o;if(typeof r==\u0026quot;number\u0026quot;)for(e=r\u0026lt;10?r:10;e\u0026gt;0;e--)r=r[0]===\u0026quot;\\t\u0026quot;?r+\u0026quot;\\t\u0026quot;:\u0026quot;\\t\u0026quot;;else r||(r=\u0026quot;\\t\u0026quot;);return t||(u=!0),o=f(n,t,i,r,u).map(function(n){n=n+\u0026quot;\u0026quot;;var t=n.split(/[\\r|\\n]/);return/\\S/.test(t.pop())||(n=t.join(\u0026quot;\\r\\n\u0026quot;)),n.substr(0,r.length)===r\u0026amp;\u0026amp;(n=n.substr(r.length)),n}),o.join(\u0026quot;\\r\\n\u0026quot;)}function f(n,t,r,u,o){function l(){n\u0026amp;\u0026amp;(s.push('\u0026lt;?xml version=\u0026quot;'+(n[\u0026quot;-version\u0026quot;]?n[\u0026quot;-version\u0026quot;]:\u0026quot;1.0\u0026quot;)+'\u0026quot; encoding=\u0026quot;'+(n[\u0026quot;-encoding\u0026quot;]?n[\u0026quot;-encoding\u0026quot;]:\u0026quot;UTF-8\u0026quot;)+'\u0026quot; ?\u0026gt;'),delete n[\u0026quot;-version\u0026quot;],delete n[\u0026quot;-encoding\u0026quot;])}function p(){var t=\u0026quot;\u0026quot;;return typeof n==\u0026quot;object\u0026quot;\u0026amp;\u0026amp;n\u0026amp;\u0026amp;Object.keys(n).forEach(function(r){r[0]===\u0026quot;-\u0026quot;\u0026amp;\u0026amp;n[r]\u0026amp;\u0026amp;(t+=\u0026quot; \u0026quot;+r.substr(1)+'=\u0026quot;'+i(n[r])+'\u0026quot;')}),t}function a(r){var f=[];return r\u0026amp;\u0026amp;!n?f:n===undefined||n===\u0026quot;\u0026quot;?f:(Array.isArray(n)?f=f.concat(e(n,t,r,u)):typeof n==\u0026quot;object\u0026quot;\u0026amp;\u0026amp;n?Object.keys(n).forEach(function(t){if(t[0]!==\u0026quot;-\u0026quot;)if(t===\u0026quot;@innerXML\u0026quot;)for(var i=0;i\u0026lt;n[t].length;i++)f=f.concat(v(n[t][i],undefined,r,u));else f=f.concat(v(n[t],t,r,u))}):f.push(u+i(n)),f)}function v(n,t,r){var o=[];if(t)switch(t){case\u0026quot;@text\u0026quot;:o.push(i(n));break;case\u0026quot;@cdata\u0026quot;:o.push(u+\u0026quot;\u0026lt;![CDATA[\u0026quot;+n+\u0026quot;]\\]\u0026gt;\u0026quot;);break;case\u0026quot;@comment\u0026quot;:o.push(u+\u0026quot;\u0026lt;!--\u0026quot;+n+\u0026quot;--\u0026gt;\u0026quot;);break;default:if(r\u0026amp;\u0026amp;!n)break;else(n===undefined||n===\u0026quot;\u0026quot;)\u0026amp;\u0026amp;o.push(u+\u0026quot;\u0026lt;\u0026quot;+t+\u0026quot;/\u0026gt;\u0026quot;);Array.isArray(n)?o=o.concat(e(n,t,r,u)):typeof n==\u0026quot;object\u0026quot;?o=o.concat(f(n,t,r,u)):o.push(u+\u0026quot;\u0026lt;\u0026quot;+t+\u0026quot;\u0026gt;\u0026quot;+i(n)+\u0026quot;\u0026lt;\\/\u0026quot;+t+\u0026quot;\u0026gt;\u0026quot;)}else Array.isArray(n)?o=o.concat(e(n,t,r,u)):typeof n==\u0026quot;object\u0026quot;?o=o.concat(f(n,t,r,u)):o.push(u+i(n));return o}var s=[];if(u||(u=\u0026quot;\u0026quot;),Array.isArray(n))return t?e(n,t,r,u,o):e(n,t,r,u);if(t){o\u0026amp;\u0026amp;l();var h=(o?\u0026quot;\u0026quot;:u)+\u0026quot;\u0026lt;\u0026quot;+t,y=p(),c=a(r);if(r\u0026amp;\u0026amp;!c.length\u0026amp;\u0026amp;!y)return\u0026quot;\u0026quot;;h+=y;c.length?(s.push(h+\u0026quot;\u0026gt;\u0026quot;),s=s.concat(c.map(function(n){return(o?\u0026quot;\u0026quot;:u)+n})),s.push((o?\u0026quot;\u0026quot;:u)+\u0026quot;\u0026lt;\\/\u0026quot;+t+\u0026quot;\u0026gt;\u0026quot;)):s.push(h+\u0026quot;/\u0026gt;\u0026quot;)}else o\u0026amp;\u0026amp;l(),s=s.concat(a(r));return s}function e(n,t,i,r,u){var e=[],s=!1,o,h;for(r||(r=\u0026quot;\u0026quot;),(!t||u)\u0026amp;\u0026amp;(s=!0,e.push('\u0026lt;?xml version=\u0026quot;'+(n[\u0026quot;-version\u0026quot;]?n[\u0026quot;-version\u0026quot;]:\u0026quot;1.0\u0026quot;)+'\u0026quot; encoding=\u0026quot;'+(n[\u0026quot;-encoding\u0026quot;]?n[\u0026quot;-encoding\u0026quot;]:\u0026quot;UTF-8\u0026quot;)+'\u0026quot;?\u0026gt;'),delete n[\u0026quot;-version\u0026quot;],delete n[\u0026quot;-encoding\u0026quot;],e.push(\u0026quot;\u0026lt;root\u0026gt;\u0026quot;),t=!t\u0026amp;\u0026amp;n[0]\u0026amp;\u0026amp;n[0].constructor\u0026amp;\u0026amp;n[0].constructor.name?n[0].constructor.name:t?t:\u0026quot;node\u0026quot;),o=0;o\u0026lt;n.length;o++)h=f(n[o],t,i,r),h.length?e=e.concat(h):e.push((s?\u0026quot;\u0026quot;:r)+\u0026quot;\u0026lt;\u0026quot;+t+\u0026quot;/\u0026gt;\u0026quot;);return s\u0026amp;\u0026amp;e.push(\u0026quot;\u0026lt;\\/root\u0026gt;\u0026quot;),e}function nt(n){var r={},i;return n\u0026amp;\u0026amp;n[0]===\u0026quot;.\u0026quot;?r.className=t(n.substr(1)):n\u0026amp;\u0026amp;n.indexOf(\u0026quot;.\u0026quot;)\u0026gt;-1?(i=n.split(\u0026quot;.\u0026quot;),r.tagName=i.shift(),r.className=t(i.join(\u0026quot;.\u0026quot;))):n\u0026amp;\u0026amp;n[0]===\u0026quot;#\u0026quot;?r.id=t(n.substr(1)):n\u0026amp;\u0026amp;n.indexOf(\u0026quot;[\u0026quot;)\u0026gt;-1?(i=n.split(\u0026quot;[\u0026quot;),r.tagName=i.shift(),i=i.join(\u0026quot;[\u0026quot;).replace(\u0026quot;]\u0026quot;,\u0026quot;\u0026quot;).split(\u0026quot;=\u0026quot;),i[0]\u0026amp;\u0026amp;(r.attribute=i[0]),i[1]\u0026amp;\u0026amp;(r.attributeValue=t(i[1]))):n\u0026amp;\u0026amp;(r.tagName=n),r}function tt(n,t,i){var r,u;return t\u0026amp;\u0026amp;typeof i==\u0026quot;string\u0026quot;?(i=nt(i),r=!1,i.tagName\u0026amp;\u0026amp;(r=n===i.tagName),i.id\u0026amp;\u0026amp;(r=t[\u0026quot;-id\u0026quot;]===i.id),i.className\u0026amp;\u0026amp;t[\u0026quot;-class\u0026quot;]\u0026amp;\u0026amp;(u=t[\u0026quot;-class\u0026quot;].split(\u0026quot; \u0026quot;),r=u.indexOf(i.className)\u0026gt;-1),i.attribute\u0026amp;\u0026amp;t[\u0026quot;-\u0026quot;+i.attribute]\u0026amp;\u0026amp;(r=i.attributeValue?t[\u0026quot;-\u0026quot;+i.attribute]===i.attributeValue:!0),r):!1}function it(n,t,i){if(t\u0026amp;\u0026amp;typeof i==\u0026quot;string\u0026quot;){var u=i.trim().split(\u0026quot; \u0026quot;),f=u.shift();if(tt(n,t,f))return u.length?u[0].trim()===\u0026quot;\u0026gt;\u0026quot;?(u.shift(),r(t,u.join(\u0026quot; \u0026quot;))):[o(t,u.join(\u0026quot; \u0026quot;))]:[t]}return null}function p(n,t,i){if(t\u0026amp;\u0026amp;typeof i==\u0026quot;string\u0026quot;){var r=[];return i.split(\u0026quot;,\u0026quot;).forEach(function(i){var u=it(n,t,i);Array.isArray(u)\u0026amp;\u0026amp;u.length\u0026amp;\u0026amp;(r=r.concat(u))}),r}return null}function r(n,t){var i=[],u=[];return Array.isArray(n)?n.forEach(function(n){i=r(n,t);Array.isArray(i)\u0026amp;\u0026amp;i.length\u0026amp;\u0026amp;(u=u.concat(i))}):typeof n==\u0026quot;object\u0026quot;\u0026amp;\u0026amp;n\u0026amp;\u0026amp;Object.keys(n).forEach(function(f){f[0]!==\u0026quot;-\u0026quot;\u0026amp;\u0026amp;(Array.isArray(n[f])?n[f].forEach(function(n){var r=p(f,n,t);Array.isArray(r)\u0026amp;\u0026amp;r.length\u0026amp;\u0026amp;(i=i.concat(r))}):i=p(f,n[f],t),Array.isArray(i)\u0026amp;\u0026amp;i.length?u=u.concat(i):(i=r(n[f],t),Array.isArray(i)\u0026amp;\u0026amp;(u=u.concat(i))))}),u.length?u:null}function o(n,t){if(typeof t!=\u0026quot;string\u0026quot;)return null;var u=t[0]===\u0026quot;*\u0026quot;,i=r(n,u?t.substr(1):t);return u?i:i\u0026amp;\u0026amp;i[0]?i[0]:null}return n.encode=i,n.decode=t,n.toObject=s,n.parse=s,n.toXml=g,n.toPrettyXml=y,n.stringify=y,n.querySelectorAll=r,n.querySelector=o,n})(typeof exports==\u0026quot;undefined\u0026quot;?this.XML||(this.XML={}):exports);\n    \u0026lt;/script\u0026gt;\n    \u0026lt;script id=\u0026quot;xml\u0026quot; type=\u0026quot;text/html\u0026quot;\u0026gt;\n\u0026lt;?xml version=\u0026quot;1.0\u0026quot; encoding=\u0026quot;utf-8\u0026quot; ?\u0026gt;\n\u0026lt;!-- comment nodes may appear almost anywhere --\u0026gt;\n\u0026lt;root id=\u0026quot;abc \u0026amp;lt;\u0026amp;quot;\u0026amp;amp;\u0026amp;apos;\u0026amp;gt;\u0026quot;\u0026gt;\n    \u0026lt;et\u0026gt;Eesti\u0026lt;/et\u0026gt;\n    text\n    \u0026lt;![CDATA[123]]\u0026gt;\n    \u0026lt;!-- comment nodes may appear almost anywhere --\u0026gt;\n\u0026lt;/root\u0026gt;\n\u0026lt;!-- comment nodes may appear almost anywhere --\u0026gt;\n    \u0026lt;/script\u0026gt;\n    \u0026lt;script\u0026gt;\n\n        function load() {\n\n            var strXml = document.getElementById(\u0026quot;xml\u0026quot;).innerHTML;\n            var objXml = XML.parse(strXml);\n            var strJson = JSON.stringify(objXml, null, 2);\n\n            function format(str) {\n\n                return str.split(\u0026quot;\\n\u0026quot;).map(function (line) {\n\n                        return \u0026quot;\u0026lt;code\u0026gt;\u0026quot; + line.split(\u0026quot;\u0026quot;)\n                            .map(function (c) { return c === \u0026quot; \u0026quot; ? \u0026quot;\u0026amp;nbsp;\u0026quot; : \u0026quot;\u0026amp;#\u0026quot; + c.charCodeAt(0) + \u0026quot;;\u0026quot;; })\n                            .join(\u0026quot;\u0026quot;) + \u0026quot;\u0026lt;/code\u0026gt;\u0026lt;br /\u0026gt;\u0026quot;;\n                    })\n                    .join(\u0026quot;\u0026quot;);\n            }\n\n            document.body.innerHTML = \u0026quot;\u0026lt;h3\u0026gt;Xml:\u0026lt;/h3\u0026gt;\u0026quot; + format(strXml);\n            document.body.innerHTML += \u0026quot;\u0026lt;h3\u0026gt;querySelector:\u0026lt;/h3\u0026gt;objXml.querySelector('et')\u0026amp;nbsp;=\u0026gt;\u0026amp;nbsp;\u0026quot; + objXml.querySelector('et');\n            document.body.innerHTML += \u0026quot;\u0026lt;h3\u0026gt;Json:\u0026lt;/h3\u0026gt;\u0026quot; + format(strJson);\n        }\n    \u0026lt;/script\u0026gt;\n\u0026lt;/head\u0026gt;\n\u0026lt;body onload=\u0026quot;load()\u0026quot;\u0026gt;\n    \n\u0026lt;/body\u0026gt;\n\u0026lt;/html\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n    \u003ch2 id=\"xml-reference\"\u003eXML Reference\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003e/**\n* Convert xml string to object.\n* @param {string} xml .\n* @param {Boolean} ignoreComment .\n* @returns {Object} .\n*/\nXML.parse(xml, ignoreComment)\nXML.toObject(xml, ignoreComment)\n\n/**\n* Get xml string. \n* Parameter 'tagName' is name current item (optional). \n* Parameter 'isMin' ignore empty fields (optional).\n* @param {any} obj Object.\n* @param {string} tagName Tag name (optional).\n* @param {Boolean} isMin Ignore empty fields (optional).\n* @param {String | Number} space Either a String or a Number. Number, from 0 to 10, to indicate how many space characters to use as white space. (optional).\n* @param {Boolean} isRoot .\n* @returns {string} xml string.\n*/\nXML.stringify(obj, tagName, isMin, space, isRoot)\nXML.toPrettyXml(obj, tagName, isMin, space, isRoot)\n\n/**\n* Get xml string.\n* Parameter 'tagName' is name current item (optional). \n* Parameter 'isMin' ignore empty fields (optional).\n* @param {any} obj Object.\n* @param {string} tagName Tag name (optional).\n* @param {Boolean} isMin Ignore empty fields (optional).\n* @param {String | Number} space Either a String or a Number. Number, from 0 to 10, to indicate how many space characters to use as white space. (optional).\n* @param {Boolean} isRoot .\n* @returns {string} xml string.\n*/\nXML.toXml(obj, tagName, isMin, space, isRoot) \n\n/**\n* @param {string} input .\n* @returns {string} .\n*/\nXML.Encode(input)\n\n/**\n* @param {string} input .\n* @returns {string} .\n*/\nXML.Decode(input)\n\n/**\n* @param {any} objXml\n* @param {string} selectors\n* @returns {any[]}\n*/\nXML.querySelectorAll(objXml, selectors)\n\n/**\n* @param {string} selectors\n* @returns {any[]}\n*/\nobjXml.querySelectorAll(selectors)\n/**\n* @param {any} objXml\n* @param {string} selectors\n* @returns {any}\n*/\nXML.querySelector(objXml, selectors)\n\n/**\n* @param {string} selectors\n* @returns {any}\n*/\nobjXml.querySelector(selectors)\n\u003c/code\u003e\u003c/pre\u003e\n    \u003ch2 id=\"license\"\u003eLicense\u003c/h2\u003e\n    \u003cp\u003e\u003ca href=\"LICENSE\"\u003eMIT\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003eCopyright (c) 2021 Manuel Lõhmus \u003ca href=\"mailto:manuel@hauss.ee\"\u003emanuel@hauss.ee\u003c/a\u003e\u003c/p\u003e\n\n\n\u003c/body\u003e\n\u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanuel-lohmus%2Fxml-obj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanuel-lohmus%2Fxml-obj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanuel-lohmus%2Fxml-obj/lists"}