所以我们假设我们有以下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文档正确加载到变量var xml
中,xml.getElementsByTagName("property")
是否会返回所有property
,label
,value
个节点或仅property
1}}没有孩子的节点?
为什么我要问这个问题,我希望能够做到以下几点:
var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");
如果该函数不会返回任何label
或value
个节点,那么最好的方法是什么?
答案 0 :(得分:5)
getElementsByTagName
方法“返回具有给定标记名称的所有后代 NodeList
的{{1}}”。因此,无论此类节点的内容是什么,Elements
都会返回标记名为getElementsByTagName("property")
的所有孩子,孩子的孩子等。它当然不会返回任何具有不同标记名称的节点。
是的,代码
property
执行您似乎想要执行的操作:它将var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");
分配给文档中第一个labels
元素的label
子项的(实时)列表,前提是其中至少一个property
元素。 (因此,为了获得稳健性,您可能希望在继续执行第二个语句之前检查例如property
。)
答案 1 :(得分: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
}
}