猜对javascript大师来说这是一个简单的问题,但是我正在学习,遇到了一个我无法猜出的问题.
我对使用javascript读取XML文件感兴趣.这是XML文件的示例:
<object name='obj1'>
<attribute name='att1' value='val1'/>
<attribute name='att2' value='val2'/>
<attribute name='attN' value='valN'/>
<subobject name='sub1'>
<attribute name='satt1' value='sval1'/>
<attribute name='satt2' value='sval2'/>
<attribute name='sattN' value='svalN'/>
</subobject>
<subobject name='subn'>
<attribute name='snatt1' value='snval1'/>
<attribute name='snatt2' value='snval2'/>
<attribute name='snattN' value='snvalN'/>
</subobject>
</object>
如您所见,我有N个对象.每个对象都具有全局属性,并且可能具有其属性的0 … M个子对象.
问题是,应用此(我的)代码来解析ob1属性,我还获得了所有子对象属性:
if (window.XMLHttpRequest) {
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET",URL,false);
xmlhttp.send();
var xmlDoc=xmlhttp.responseXML;
var objList = xmlDoc.getElementsByTagName("object");
var attrList = objList[0].getElementsByTagName("attribute"); // Got ALL attributes here
}
在该代码中(为了简单起见,没有错误测试),我的attrList对象同时获得了obj1和所有子对象属性.
提前致谢!
解决方法:
在这种情况下,由于您要查找的属性元素是对象元素的直接子元素,因此您可以做的一件简单的事情就是手动遍历对象元素的子元素:
var obj = objList[0]
var childNodes = obj.childNodes
for(var i=0; i<childNodes.length; i++){
var child = childNodes[i];
if(child.nodeType == 1 && child.nodeName == 'attribute'){
do_something(child);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。