+72
-13
@@ -16,7 +16,12 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Xml2Node = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ | ||
| function Xml2Node() { | ||
| this.parser = new DOMParser(); | ||
| function Xml2Node(domParser) { | ||
| this.parser = null; | ||
| if (domParser) { | ||
| this.parser = domParser; | ||
| } else { | ||
| this.parser = new DOMParser(); | ||
| } | ||
| } | ||
| /** | ||
@@ -33,4 +38,15 @@ * Parse specified XML text | ||
| var model = {}; | ||
| me._parseInternally(doc.children[0], model, {stack: [], index: []}); | ||
| var firstElement; | ||
| for (var i = 0; i < doc.childNodes.length; i++) { | ||
| var tagName = doc.childNodes[i].nodeName; | ||
| if (tagName && tagName != "#text" && tagName != "#comment") { | ||
| firstElement = doc.childNodes[i]; | ||
| break; | ||
| } | ||
| } | ||
| me._parseInternally(firstElement, model, {stack: [], index: []}); | ||
| return { | ||
@@ -66,3 +82,4 @@ children: model | ||
| //-if text node is not empty | ||
| parentElementModel.value = element.textContent; | ||
| parentElementModel.value = me.removeUnnecessaryTail(element.textContent); | ||
| } | ||
@@ -84,13 +101,32 @@ | ||
| var elementHasValueOrChildren = false; | ||
| var elementHasValueOrChildren = (element.children.length > 0); | ||
| for (var nodeIdx = 0; nodeIdx < element.childNodes.length; nodeIdx++) { | ||
| if (element.childNodes[nodeIdx].nodeName == "#text") { | ||
| var blankReplacedElementContent = element.textContent.replace(/ /g, '').replace(/\r?\n/g, '').replace(/\n/g, '').replace(/\t/g, ''); | ||
| if (blankReplacedElementContent.length == 0) { | ||
| } else { | ||
| //-if text node is not empty | ||
| elementHasValueOrChildren = true; | ||
| } | ||
| } | ||
| else if (element.childNodes[nodeIdx].nodeName == "#comment") { | ||
| } else { | ||
| elementHasValueOrChildren = true; | ||
| } | ||
| } | ||
| if (elementHasValueOrChildren) { | ||
| elementModel.children = {}; | ||
| } else { | ||
| if (element.textContent && element.textContent.length > 0) { | ||
| elementModel.value = element.textContent; | ||
| return; | ||
| } | ||
| } | ||
| // else { | ||
| // if (element.textContent && element.textContent.length > 0) { | ||
| // elementModel.value = element.textContent; | ||
| // return; | ||
| // } | ||
| // } | ||
@@ -132,3 +168,26 @@ | ||
| }; | ||
| /** | ||
| * Remove unncessary space or newline chars | ||
| * @param text | ||
| * @returns {string} | ||
| */ | ||
| Xml2Node.prototype.removeUnnecessaryTail = function (text) { | ||
| var textLen = text.length; | ||
| var tailIndex = textLen; | ||
| for (var charIdx = textLen - 1; charIdx >= 0; charIdx--) { | ||
| var charAtIdx = text.charAt(charIdx); | ||
| if (charAtIdx == ' ' || charAtIdx == '\n' || charAtIdx == '\r') { | ||
| //- if space or new line | ||
| } else { | ||
| //- if concrete char | ||
| tailIndex = charIdx; | ||
| break; | ||
| } | ||
| } | ||
| var resultText = text.substr(0, tailIndex + 1); | ||
| return resultText; | ||
| }; | ||
| Xml2Node.prototype.generateExampleSourceCode = function (xmlText) { | ||
@@ -206,3 +265,3 @@ var me = this; | ||
| if (printWithValue) { | ||
| attrStr += " // -> " + childNode.attr(childNodeAttrName); | ||
| attrStr += " // -> " + '"'+childNode.attr(childNodeAttrName)+'"'; | ||
| } | ||
@@ -221,3 +280,3 @@ | ||
| if (printWithValue) { | ||
| valueStr += " // ->" + childNode.value(); | ||
| valueStr += " // -> " + '"'+childNode.value()+'"'; | ||
| } | ||
@@ -224,0 +283,0 @@ |
+6
-2
| { | ||
| "name": "xml2node", | ||
| "version": "1.0.2", | ||
| "version": "1.0.3", | ||
| "description": "Simple and easy XML parser", | ||
@@ -11,3 +11,5 @@ "main": "index.js", | ||
| "build": "browserify index.js --standalone Xml2Node -o dist/Xml2Node.js", | ||
| "watch:example-js": "watchify index.js --standalone Xml2Node -o example/Xml2Node.js -v" | ||
| "watch:example-js": "watchify index.js --standalone Xml2Node -o example/Xml2Node.js -v", | ||
| "test":"mocha" | ||
| }, | ||
@@ -25,2 +27,4 @@ "repository": { | ||
| "devDependencies": { | ||
| "xmldom":"^0.1.27", | ||
| "mocha": "^5.2.0", | ||
| "browserify": "^14.5.0", | ||
@@ -27,0 +31,0 @@ "http-server": "^0.10.0", |
+72
-13
@@ -7,7 +7,12 @@ var XmlNode = require("./XmlNode.js"); | ||
| function Xml2Node() { | ||
| this.parser = new DOMParser(); | ||
| function Xml2Node(domParser) { | ||
| this.parser = null; | ||
| if (domParser) { | ||
| this.parser = domParser; | ||
| } else { | ||
| this.parser = new DOMParser(); | ||
| } | ||
| } | ||
| /** | ||
@@ -24,4 +29,15 @@ * Parse specified XML text | ||
| var model = {}; | ||
| me._parseInternally(doc.children[0], model, {stack: [], index: []}); | ||
| var firstElement; | ||
| for (var i = 0; i < doc.childNodes.length; i++) { | ||
| var tagName = doc.childNodes[i].nodeName; | ||
| if (tagName && tagName != "#text" && tagName != "#comment") { | ||
| firstElement = doc.childNodes[i]; | ||
| break; | ||
| } | ||
| } | ||
| me._parseInternally(firstElement, model, {stack: [], index: []}); | ||
| return { | ||
@@ -57,3 +73,4 @@ children: model | ||
| //-if text node is not empty | ||
| parentElementModel.value = element.textContent; | ||
| parentElementModel.value = me.removeUnnecessaryTail(element.textContent); | ||
| } | ||
@@ -75,13 +92,32 @@ | ||
| var elementHasValueOrChildren = false; | ||
| var elementHasValueOrChildren = (element.children.length > 0); | ||
| for (var nodeIdx = 0; nodeIdx < element.childNodes.length; nodeIdx++) { | ||
| if (element.childNodes[nodeIdx].nodeName == "#text") { | ||
| var blankReplacedElementContent = element.textContent.replace(/ /g, '').replace(/\r?\n/g, '').replace(/\n/g, '').replace(/\t/g, ''); | ||
| if (blankReplacedElementContent.length == 0) { | ||
| } else { | ||
| //-if text node is not empty | ||
| elementHasValueOrChildren = true; | ||
| } | ||
| } | ||
| else if (element.childNodes[nodeIdx].nodeName == "#comment") { | ||
| } else { | ||
| elementHasValueOrChildren = true; | ||
| } | ||
| } | ||
| if (elementHasValueOrChildren) { | ||
| elementModel.children = {}; | ||
| } else { | ||
| if (element.textContent && element.textContent.length > 0) { | ||
| elementModel.value = element.textContent; | ||
| return; | ||
| } | ||
| } | ||
| // else { | ||
| // if (element.textContent && element.textContent.length > 0) { | ||
| // elementModel.value = element.textContent; | ||
| // return; | ||
| // } | ||
| // } | ||
@@ -123,3 +159,26 @@ | ||
| }; | ||
| /** | ||
| * Remove unncessary space or newline chars | ||
| * @param text | ||
| * @returns {string} | ||
| */ | ||
| Xml2Node.prototype.removeUnnecessaryTail = function (text) { | ||
| var textLen = text.length; | ||
| var tailIndex = textLen; | ||
| for (var charIdx = textLen - 1; charIdx >= 0; charIdx--) { | ||
| var charAtIdx = text.charAt(charIdx); | ||
| if (charAtIdx == ' ' || charAtIdx == '\n' || charAtIdx == '\r') { | ||
| //- if space or new line | ||
| } else { | ||
| //- if concrete char | ||
| tailIndex = charIdx; | ||
| break; | ||
| } | ||
| } | ||
| var resultText = text.substr(0, tailIndex + 1); | ||
| return resultText; | ||
| }; | ||
| Xml2Node.prototype.generateExampleSourceCode = function (xmlText) { | ||
@@ -197,3 +256,3 @@ var me = this; | ||
| if (printWithValue) { | ||
| attrStr += " // -> " + childNode.attr(childNodeAttrName); | ||
| attrStr += " // -> " + '"'+childNode.attr(childNodeAttrName)+'"'; | ||
| } | ||
@@ -212,3 +271,3 @@ | ||
| if (printWithValue) { | ||
| valueStr += " // ->" + childNode.value(); | ||
| valueStr += " // -> " + '"'+childNode.value()+'"'; | ||
| } | ||
@@ -215,0 +274,0 @@ |
29000
17.81%581
20.29%6
50%