在javascript中读取XML属性

猜对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和所有子对象属性.

如何重写代码以仅获取att1 … attN?!?!

提前致谢!

解决方法:

在这种情况下,由于您要查找的属性元素是对象元素的直接子元素,因此您可以做的一件简单的事情就是手动遍历对象元素的子元素:

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);
    }
}

有关这些和其他DOM方法的信息,建议您参考MDN上的文档.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念