67 lines
2.4 KiB
JavaScript
67 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
const nodeToJson = require('./node2json');
|
|
const xmlToNodeobj = require('./xmlstr2xmlnode');
|
|
const x2xmlnode = require('./xmlstr2xmlnode');
|
|
const buildOptions = require('./util').buildOptions;
|
|
const validator = require('./validator');
|
|
|
|
exports.parse = function(xmlData, options, validationOption) {
|
|
if( validationOption){
|
|
if(validationOption === true) validationOption = {}
|
|
|
|
const result = validator.validate(xmlData, validationOption);
|
|
if (result !== true) {
|
|
throw Error( result.err.msg)
|
|
}
|
|
}
|
|
options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);
|
|
const traversableObj = xmlToNodeobj.getTraversalObj(xmlData, options)
|
|
//print(traversableObj, " ");
|
|
return nodeToJson.convertToJson(traversableObj, options);
|
|
};
|
|
exports.convertTonimn = require('../src/nimndata').convert2nimn;
|
|
exports.getTraversalObj = xmlToNodeobj.getTraversalObj;
|
|
exports.convertToJson = nodeToJson.convertToJson;
|
|
exports.convertToJsonString = require('./node2json_str').convertToJsonString;
|
|
exports.validate = validator.validate;
|
|
exports.j2xParser = require('./json2xml');
|
|
exports.parseToNimn = function(xmlData, schema, options) {
|
|
return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);
|
|
};
|
|
|
|
|
|
function print(xmlNode, indentation){
|
|
if(xmlNode){
|
|
console.log(indentation + "{")
|
|
console.log(indentation + " \"tagName\": \"" + xmlNode.tagname + "\", ");
|
|
if(xmlNode.parent){
|
|
console.log(indentation + " \"parent\": \"" + xmlNode.parent.tagname + "\", ");
|
|
}
|
|
console.log(indentation + " \"val\": \"" + xmlNode.val + "\", ");
|
|
console.log(indentation + " \"attrs\": " + JSON.stringify(xmlNode.attrsMap,null,4) + ", ");
|
|
|
|
if(xmlNode.child){
|
|
console.log(indentation + "\"child\": {")
|
|
const indentation2 = indentation + indentation;
|
|
Object.keys(xmlNode.child).forEach( function(key) {
|
|
const node = xmlNode.child[key];
|
|
|
|
if(Array.isArray(node)){
|
|
console.log(indentation + "\""+key+"\" :[")
|
|
node.forEach( function(item,index) {
|
|
//console.log(indentation + " \""+index+"\" : [")
|
|
print(item, indentation2);
|
|
})
|
|
console.log(indentation + "],")
|
|
}else{
|
|
console.log(indentation + " \""+key+"\" : {")
|
|
print(node, indentation2);
|
|
console.log(indentation + "},")
|
|
}
|
|
});
|
|
console.log(indentation + "},")
|
|
}
|
|
console.log(indentation + "},")
|
|
}
|
|
} |