var someTree = {
    tagName: "table", //html tag
    subTags: [ //вложенные тэги
        {
                    tagName: "tr",
                    subTags: [
                        {
                            tagName: "td",
                            attrs: {
                                style: "'color: #000'"
                            },
                            text: "some text",
                        },
                        {
                            tagName: "td",
                            text: "some text 2",
                        }
                    ]
        },
    ],
    attrs: 
    {
        border: 1,
        style: "'border: 1px solid #ccc'",
        cellspacing: 0
    },
}

var str = "";

str += "<" + someTree.tagName + ' '; 
for (var i = 0; i < Object.keys(someTree.attrs).length; i++) {
    str += Object.keys(someTree.attrs)[i] + '=' + someTree.attrs[Object.keys(someTree.attrs)[i]] + " ";
}
str += ">";


for (var i = 0; i < someTree.subTags.length; i++) { // вывожу внутренние теги
    str += "<" + someTree.subTags[i].tagName + ' ';
   
    if(someTree.subTags[i].attrs){ // если у тега нет атрибутов то цикл не исполняется
        for (var j = 0; j < Object.keys(someTree.subTags[i].attrs).length; j++) {
            str += Object.keys(someTree.subTags[i].attrs)[j] + '=' + someTree.subTags[i].attrs[Object.keys(someTree.subTags[i].attrs)[j]] + " ";
        }
    }
    str += ">";
    if(someTree.subTags[i].text)
        str += someTree.subTags[i].text;
    for (var k = 0; k < someTree.subTags[i].subTags.length; k++) {
        str += "<" + someTree.subTags[i].subTags[k].tagName + ' ';
        if(someTree.subTags[i].subTags[k].attrs){ // если у тега нет атрибутов то цикл не исполняется
            for (var j = 0; j < Object.keys(someTree.subTags[i].subTags[k].attrs).length; j++) {
                str += Object.keys(someTree.subTags[i].subTags[k].attrs)[j] + '=' + someTree.subTags[i].subTags[k].attrs[Object.keys(someTree.subTags[i].subTags[k].attrs)[j]] + " ";
            }
        }
        str += ">";
        if(someTree.subTags[i].subTags[k].text)
        str += someTree.subTags[i].subTags[k].text;
        str += "</" + someTree.subTags[i].subTags[k].tagName + ' >';
    }

    str += "</" + someTree.subTags[i].tagName + ">";
}


str += "</" + someTree.tagName + ">";
document.write(str);