2

假设我们有以下 XML 结构:

<property>
    <label>Label 1</label>
    <value>value 1</label>
</property>
<property>
    <label>Label 2</label>
    <value>value 2</label>
</property>
<!-- more of these -->

如果我们已将 XML 文档正确加载到 variablevar xml中,xml.getElementsByTagName("property")返回 ALL property, label,value节点还是只返回property没有子节点的节点?

为什么我要问这个,我希望能够做到以下几点:

var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");

如果该函数不会返回任何labelvalue节点,那么完成该任务的最佳方法是什么?

4

2 回答 2

5

getElementsByTagName方法“返回具有给定标签名称的NodeList所有后代”。 Elements因此,无论此类节点的内容是什么getElementsByTagName("property"),都返回具有标签 name 的所有子节点、子节点的子节点等。property它当然不会返回任何具有不同标签名称的节点。

所以是的,代码

var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");

做你似乎想做的事情:它分配给文档中第一个元素labels的(实时)子元素列表,前提是至少有一个元素。(因此,为了稳健性,您可能希望在继续执行第二个语句之前进行检查。)labelpropertypropertyprops.length > 0

于 2013-09-16T06:44:17.277 回答
1

试试这个,这对你有帮助

var props = xml.getElementsByTagName("property");
var eleChild = props .childNodes;
for( i = 0 , j = eleChild.length; i < j ; i++ ){
    if( eleChild[ i ].className == "autodropdown" ){
        YOUr_SCRIPT
    }
}
于 2013-09-16T05:41:51.593 回答