猜猜这是一个简单的问题,对于一个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?!?!
提前致谢!
答案 0 :(得分:2)
在这种情况下,由于您要查找的attribute
元素是object
元素的直接子元素,因此您可以做的一件简单事就是遍历{{1}的子元素手工元素:
object
有关这些和其他DOM方法的信息,我建议您查看MDN上的文档。
答案 1 :(得分:0)
您遇到的问题是,子对象的技术“属性”也是对象的子对象。请记住,任何元素都是Node对象,在该节点上,您可以获取所有childNodes。您可以这样做并处理每个“元素”节点并确定它是否是“属性”节点。