Udayantha Warnasuriya
unread,Dec 16, 2012, 9:45:50 AM12/16/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to libx...@googlegroups.com
Hi I'm writing a function to replace all text tags with integer values in a xml file. which will be '<child>' will be replaced as '<1>'. Here is my code so far;
var libxml = require('libxmljs');
var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
'<root>' +
'<child foo="bar">' +
'<grandchild baz="fizbuzz">grandchild content</grandchild>' +
'</child>' +
'<child foo="bar1">' +
'<grandchild baz="fizbuzz">grandchild content 1</grandchild>' +
'</child>' +
'<sibling>with content!</sibling>' +
'</root>';
var xmlDoc = libxml.parseXml(xml);
var allxml = xmlDoc.root();
var allNodes = xmlDoc.childNodes();
//console.log(allNodes.length);
rec(allxml);
function rec(anElement){
for (var j=0; j<allNodes.length;j++ )
{
var firstnode = allNodes[j].name();
var findelem = xmlDoc.find(firstnode);
var currChild = xmlDoc.child(j);
var currnode = xmlDoc.childNodes();
if (hasChild(currChild)) {
rec(currChild.childNodes());
}
else{ replaceCurrentTag(findelem, j);}
}
}
function replaceCurrentTag(currelem, j){
for (var i=0;i<currelem.length;i++){
currelem[i].name(j.toString());
}
}
function hasChild(xmlElement){
var e = xmlElement.childNodes();
if (e.length > 0){ return true; }
else return false;
}
console.log(xmlDoc.toString());
But I'm getting this error when I run the code. What am I doing wrong in here. Please help;
/home/compaq/node_modules/libxmljs/lib/document.js:0
(function (exports, require, module, __filename, __dirname) { var bindings = r
^
RangeError: Maximum call stack size exceeded