xml get属性javascript对childNodes不起作用

时间:2013-11-19 05:35:20

标签: javascript xml dom

我有以下代码示例,试图显示svg地图的d属性(找到here)。

// path method
var node = xmlDoc.getElementById('g67');
console.log(node);

for(var i = 0; i < node.getElementsByTagName('path').length; ++i) {
    console.log(node.getElementsByTagName('path')[i].getAttribute('d'));
}

// childNodes method
var node = xmlDoc.getElementById('g67');
console.log(node);

for(var i = 0; i < node.childNodes.length; ++i) {
    console.log(node.childNodes[i].getAttribute('d'));
}

前者有效但后者无效。

我理解我在XML DOM中的节点概念出错了。任何帮助,将不胜感激。谢谢。

可以找到完整的代码here

1 个答案:

答案 0 :(得分:0)

childNodes为您提供所有子节点。文本节点,注释,处理指令,一切。

您想要检查子类型(名称必须是“路径”):

var node = document.getElementById('g67'), child, i;
console.log(node);

for (i = 0; i < node.childNodes.length; i++) {
    child = node.childNodes[i];
    if (child.nodeName === 'path') {
        console.log(child.getAttribute('d'));
    }
}

另请注意,childNodes仅为您提供直接儿童,而getElementsByTagName()则为您提供所有后代