如何通过JavaScript使用元素名称获取子元素?

时间:2015-05-14 20:09:32

标签: javascript xml dom nested-loops

我有一个包含许多节点的XML文件,如下所示:

<map-item>
            <location-name>U Lot (Pine Sreet)</location-name>
            <link>https://maps.google.com?daddr=Pine+Avenue+Middletown+CT+06457</link>
            <latitude>41.5501724</latitude>
            <longitude>-72.6588056</longitude>
            <icon-path>img/parking-icon.svg</icon-path>
 </map-item>

我已成功遍历XML文件中的所有 map-item 元素,如下所示:

 markers = xml.documentElement.getElementsByTagName("map-item");
        for (var i = 0; i < markers.length; i++) {
              //do something here for each marker
        }

但是我很难弄清楚如何向下钻取并获取每个map-item元素内的子元素,例如 location-name icon-path 即可。为了获取这些子元素的值并使用它们做些什么,我需要做什么?

2 个答案:

答案 0 :(得分:0)

您可以在每个标记上再次使用getElementsByTagName。如果xml有效且符合某个架构,您可以预期<marker>中至少有一个给定名称的元素。

var markers = xml.documentElement.getElementsByTagName("map-item");
for (var i = 0; i < markers.length; i++) {
    var marker = markers[i];
    var locationName = marker.getElementsByTagName("location-name")[0].textContent;
    var iconPath = marker.getElementsByTagName("icon-path")[0].textContent;
    …
}

如果您不知道每个<marker>中有多少子元素,则必须打开所选列表的.length或重新循环。

答案 1 :(得分:0)

您是否尝试过markers[0].childNodes

for (var i = 0; i < markers[0].childNodes.length; i++) {
  // NOTE: List is live, Adding or removing children will change the list
  markers[0].childNodes[i];
}

请参阅Mozilla Documentation

@Prasanth非常友好地用fiddle进行演示来演示(我修改了输出,因此它不会是警报)。