New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

xml-node-parser

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

xml-node-parser - npm Package Compare versions

Comparing version
1.0.1
to
1.0.2
+5
.travis.yml
language: node_js
node_js:
- "node"
env:
- NODE_ENV=TEST
# xml-node-parser
[![Build Status](https://travis-ci.org/samick17/xml-node-parser.svg?branch=master)](https://travis-ci.org/samick17/xml-node-parser)
# Installation
``` npm install xml-node-parser ```
# Usage
``` var nodes = xmlParser.parseFromText('<div></div>'); ```
# NPM
https://www.npmjs.com/package/xml-node-parser

Sorry, the diff of this file is not supported yet

<tr>
<td data-label="Version">Node.js 10.3.0</td>
<td data-label="LTS"></td>
<td data-label="Date"><time>2018-05-29</time></td>
<td data-label="V8">6.6.346.32</td>
<td data-label="npm">6.1.0</td>
<td data-label="NODE_MODULE_VERSION">64</td>
<td class="download-table-last">
<a href="https://nodejs.org/download/release/v10.3.0/">
Downloads
</a>
<a href="https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.3.0">
Changelog
</a>
<a href="https://nodejs.org/dist/v10.3.0/docs/api/">
Docs
</a>
</td>
</tr>
describe('xml-parser', () => {
const assert = require('chai').assert;
const xmlParser = require('../xml-parser');
it('parse simple xml', () => {
var nodes = xmlParser.parseFromText('<div></div>');
assert.equal(1, nodes.length);
assert.equal(0, nodes[0].children.length);
assert.equal('<div/>', nodes[0].toXml());
assert.equal('div: \n', nodes[0].toString());
nodes = xmlParser.parseFromText('<div>12345</div>');
assert.equal(1, nodes.length);
assert.equal(0, nodes[0].children.length);
assert.equal('<div>12345</div>', nodes[0].toXml());
assert.equal('div: 12345\n', nodes[0].toString());
nodes = xmlParser.parseFromText('<div name="newname">12345</div>');
assert.equal(1, nodes.length);
assert.equal(0, nodes[0].children.length);
assert.equal('<div name="newname">12345</div>', nodes[0].toXml());
assert.equal('div(name="newname"): 12345\n', nodes[0].toString());
nodes = xmlParser.parseFromText('<div name="newname">"abcdefg"</div>');
assert.equal(1, nodes.length);
assert.equal(0, nodes[0].children.length);
assert.equal('<div name="newname">"abcdefg"</div>', nodes[0].toXml());
assert.equal('div(name="newname"): "abcdefg"\n', nodes[0].toString());
nodes = xmlParser.parseFromText('<div name="newname" attr2="thesecondattr">12345</div>');
assert.equal(1, nodes.length);
assert.equal(0, nodes[0].children.length);
assert.equal('<div name="newname" attr2="thesecondattr">12345</div>', nodes[0].toXml());
assert.equal('div(name="newname" attr2="thesecondattr"): 12345\n', nodes[0].toString());
nodes = xmlParser.parseFromText('<div name="newname" attr2="thesecondattr"><div>childA</div><div>childB</div></div>');
assert.equal(1, nodes.length);
assert.equal(2, nodes[0].children.length);
assert.equal('<div name="newname" attr2="thesecondattr"><div>childA</div><div>childB</div></div>', nodes[0].toXml());
assert.equal('div(name="newname" attr2="thesecondattr"): \n div: childA\n div: childB\n', nodes[0].toString());
nodes = xmlParser.parseFromText('<div>3<div>2<div>1</div></div></div>');
assert.equal(1, nodes.length);
assert.equal(1, nodes[0].children[0].children.length);
assert.equal('<div>3<div>2<div>1</div></div></div>', nodes[0].toXml());
assert.equal('div: 3\n div: 2\n div: 1\n', nodes[0].toString());
});
it('parse xml from file(not exists)', (done) => {
xmlParser.parseFromFile('./test/testdata/node-version1.xml')
.then((nodes) => {
assert.fail('parse from file failed');
}, (err) => {
assert.equal(new Error('File not found!').toString(), err.toString());
done();
});
});
it('parse xml from file', (done) => {
xmlParser.parseFromFile('./test/testdata/node-version.xml')
.then((nodes) => {
assert.equal(1, nodes.length);
assert.equal(7, nodes[0].children.length);
var n1 = nodes[0].children[0];
assert.equal('<td data-label="Version">Node.js 10.3.0</td>', n1.toXml());
assert.equal('td', n1.name);
assert.deepEqual({'data-label': 'Version'}, n1.attrs);
assert.equal('Node.js 10.3.0', n1.value);
assert.equal(0, n1.children.length);
var n2 = nodes[0].children[1];
assert.equal('<td data-label="LTS"/>', n2.toXml());
assert.equal('td', n2.name);
assert.deepEqual({'data-label': 'LTS'}, n2.attrs);
assert.equal('', n2.value);
assert.equal(0, n2.children.length);
var n3 = nodes[0].children[2];
assert.equal('<td data-label="Date"><time>2018-05-29</time></td>', n3.toXml());
assert.equal('td(data-label="Date"): \n time: 2018-05-29\n', n3.toString());
assert.equal('td', n3.name);
assert.deepEqual({'data-label': 'Date'}, n3.attrs);
assert.equal('', n3.value);
var n31 = n3.children[0];
assert.equal('time', n31.name);
assert.deepEqual({}, n31.attrs);
assert.equal('2018-05-29', n31.value);
assert.equal(1, n3.children.length);
var n4 = nodes[0].children[3];
assert.equal('<td data-label="V8">6.6.346.32</td>', n4.toXml());
assert.equal('td', n4.name);
assert.deepEqual({'data-label': 'V8'}, n4.attrs);
assert.equal('6.6.346.32', n4.value);
assert.equal(0, n4.children.length);
var n5 = nodes[0].children[4];
assert.equal('<td data-label="npm">6.1.0</td>', n5.toXml());
assert.equal('td', n5.name);
assert.deepEqual({'data-label': 'npm'}, n5.attrs);
assert.equal('6.1.0', n5.value);
assert.equal(0, n5.children.length);
var n6 = nodes[0].children[5];
assert.equal('<td data-label="NODE_MODULE_VERSION">64</td>', n6.toXml());
assert.equal('td', n6.name);
assert.deepEqual({'data-label': 'NODE_MODULE_VERSION'}, n6.attrs);
assert.equal('64', n6.value);
assert.equal(0, n6.children.length);
var n7 = nodes[0].children[6];
assert.equal(['<td class="download-table-last">',
'<a href="https://nodejs.org/download/release/v10.3.0/">',
'Downloads',
'</a>',
'<a href="https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.3.0">',
'Changelog',
'</a>',
'<a href="https://nodejs.org/dist/v10.3.0/docs/api/">',
'Docs',
'</a>',
'</td>'].join(''), n7.toXml());
assert.equal('td', n7.name);
assert.deepEqual({class: 'download-table-last'}, n7.attrs);
assert.equal('', n7.value);
assert.equal(3, n7.children.length);
var n71 = n7.children[0];
assert.equal('a', n71.name);
assert.deepEqual({href: 'https://nodejs.org/download/release/v10.3.0/'}, n71.attrs);
assert.equal('Downloads', n71.value);
var n72 = n7.children[1];
assert.equal('a', n72.name);
assert.deepEqual({href: 'https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.3.0'}, n72.attrs);
assert.equal('Changelog', n72.value);
var n73 = n7.children[2];
assert.equal('a', n73.name);
assert.deepEqual({href: 'https://nodejs.org/dist/v10.3.0/docs/api/'}, n73.attrs);
assert.equal('Docs', n73.value);
done();
}, (err) => {
assert.fail('Invalid status');
done();
});
})
it('parse xml', () => {
var xmlText = ['<tr>',
'<td data-label="Version">Node.js 10.3.0</td>',
'<td data-label="LTS"></td>',
'<td data-label="Date"><time>2018-05-29</time></td>',
'<td data-label="V8">6.6.346.32</td>',
'<td data-label="npm">6.1.0</td>',
'<td data-label="NODE_MODULE_VERSION">64</td>',
'<td class="download-table-last">',
'<a href="https://nodejs.org/download/release/v10.3.0/">',
'Downloads',
'</a>',
'<a href="https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.3.0">',
'Changelog',
'</a>',
'<a href="https://nodejs.org/dist/v10.3.0/docs/api/">',
'Docs',
'</a>',
'</td>',
'</tr>'].join('');
var nodes = xmlParser.parseFromText(xmlText);
assert.equal(1, nodes.length);
assert.equal(7, nodes[0].children.length);
var n1 = nodes[0].children[0];
assert.equal('<td data-label="Version">Node.js 10.3.0</td>', n1.toXml());
assert.equal('td', n1.name);
assert.deepEqual({'data-label': 'Version'}, n1.attrs);
assert.equal('Node.js 10.3.0', n1.value);
assert.equal(0, n1.children.length);
var n2 = nodes[0].children[1];
assert.equal('<td data-label="LTS"/>', n2.toXml());
assert.equal('td', n2.name);
assert.deepEqual({'data-label': 'LTS'}, n2.attrs);
assert.equal('', n2.value);
assert.equal(0, n2.children.length);
var n3 = nodes[0].children[2];
assert.equal('<td data-label="Date"><time>2018-05-29</time></td>', n3.toXml());
assert.equal('td', n3.name);
assert.deepEqual({'data-label': 'Date'}, n3.attrs);
assert.equal('', n3.value);
var n31 = n3.children[0];
assert.equal('time', n31.name);
assert.deepEqual({}, n31.attrs);
assert.equal('2018-05-29', n31.value);
assert.equal(1, n3.children.length);
var n4 = nodes[0].children[3];
assert.equal('<td data-label="V8">6.6.346.32</td>', n4.toXml());
assert.equal('td', n4.name);
assert.deepEqual({'data-label': 'V8'}, n4.attrs);
assert.equal('6.6.346.32', n4.value);
assert.equal(0, n4.children.length);
var n5 = nodes[0].children[4];
assert.equal('<td data-label="npm">6.1.0</td>', n5.toXml());
assert.equal('td', n5.name);
assert.deepEqual({'data-label': 'npm'}, n5.attrs);
assert.equal('6.1.0', n5.value);
assert.equal(0, n5.children.length);
var n6 = nodes[0].children[5];
assert.equal('<td data-label="NODE_MODULE_VERSION">64</td>', n6.toXml());
assert.equal('td', n6.name);
assert.deepEqual({'data-label': 'NODE_MODULE_VERSION'}, n6.attrs);
assert.equal('64', n6.value);
assert.equal(0, n6.children.length);
var n7 = nodes[0].children[6];
assert.equal(['<td class="download-table-last">',
'<a href="https://nodejs.org/download/release/v10.3.0/">',
'Downloads',
'</a>',
'<a href="https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.3.0">',
'Changelog',
'</a>',
'<a href="https://nodejs.org/dist/v10.3.0/docs/api/">',
'Docs',
'</a>',
'</td>'].join(''), n7.toXml());
assert.equal('td', n7.name);
assert.deepEqual({class: 'download-table-last'}, n7.attrs);
assert.equal('', n7.value);
assert.equal(3, n7.children.length);
var n71 = n7.children[0];
assert.equal('a', n71.name);
assert.deepEqual({href: 'https://nodejs.org/download/release/v10.3.0/'}, n71.attrs);
assert.equal('Downloads', n71.value);
var n72 = n7.children[1];
assert.equal('a', n72.name);
assert.deepEqual({href: 'https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V10.md#10.3.0'}, n72.attrs);
assert.equal('Changelog', n72.value);
var n73 = n7.children[2];
assert.equal('a', n73.name);
assert.deepEqual({href: 'https://nodejs.org/dist/v10.3.0/docs/api/'}, n73.attrs);
assert.equal('Docs', n73.value);
});
});
+14
-7
{
"name": "xml-node-parser",
"version": "1.0.1",
"description": "Parse xml as node objects",
"description": "",
"version": "1.0.2",
"description": "Unlike marshal/unmarshal xml parser, parse xml file as XmlNode objects.",
"main": "index.js",
"scripts": {
"test": "nyc mocha"
},
"keywords": [
"xml"
"xml"
],
"repository": {
"type": "git",
"url": "https://github.com/samick17/xml-node-parser"
"type": "git",
"url": "https://github.com/samick17/xml-node-parser"
},
"author": "Samick <boneache@gmail.com>",
"license": "MIT"
"license": "MIT",
"devDependencies": {
"chai": "^4.1.2",
"mocha": "^5.2.0",
"nyc": "^12.0.1"
}
}

@@ -22,3 +22,11 @@ (function() {

XmlNode.prototype.setValue = function(value) {
this.value = value;
var typeofValue = typeof value;
switch(typeofValue) {
case 'string':
this.value = value.trim();
break;
default:
this.value = '';
break;
}
};

@@ -41,3 +49,5 @@ XmlNode.prototype.attributeToString = function() {

prefix = prefix || '';
text += `${prefix}${this.name}(${this.attributeToString()}): ${this.value}\n`;
var attrText = this.attributeToString();
attrText = attrText ? `(${attrText})` : '';
text += `${prefix}${this.name}${attrText}: ${this.value}\n`;
prefix += ' ';

@@ -146,2 +156,4 @@ this.forEach((child) => {

this.isInline = this.chunk !== '</';
} else {
this.appendChunk(ch);
}

@@ -245,3 +257,3 @@ break;

parser.write(xmlText);
return parser.getNodes();
return parser.getNodes();
},

@@ -257,3 +269,3 @@ parseFromFile: function(filePath) {

});
rs.on('end', () => {
rs.on('end', (data) => {
resolve(parser.getNodes());

@@ -260,0 +272,0 @@ });