2014-11-08 69 views
0

使用下面的函数递归XML步行寻找空节点

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它输出好像还有空节点,但没有

是什么造成这一点,我该如何解决它?

+0

固定的小提琴链接 – SReject 2014-11-08 10:56:54

+1

不知道你的空节点是什么意思? – 2014-11-08 11:10:41

回答

0

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

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