递归XML遍历查找空节点

时间:2014-11-08 10:53:52

标签: javascript xml recursion

使用以下功能

var data = [];
function recurseXML(node, path) {
    var i, nodes;
    if (node.hasChildNodes()) {
        nodes = node.childNodes;
        path += (path ? "." : "") + node.tagName
        if (nodes.length < 2) {
            recurseXML(nodes[0], path);
        } else {
            for (i = 0; i < nodes.length; i += 1) {
                recurseXML(nodes[i], path + "[" + i + "]");
            }
        }
    } else {
        data.push(path + " " + (node.nodeValue).trim());
    }
}

当我尝试遍历XML in this fiddle时,它输出就好像有空节点,但是没有

造成这种情况的原因是什么,我该如何解决?

1 个答案:

答案 0 :(得分:0)

问题是我的节点之间的空格会创建一个空文本节点。为了解决这个问题,我在递归遍历XMLDOM之前修剪了节点之间多余空格的xml:

document.body.innerHTML = (document.body.innerHTML).replace(/>\s+</g, '><');