我有一个包含许多节点的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 即可。为了获取这些子元素的值并使用它们做些什么,我需要做什么?
答案 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];
}
@Prasanth非常友好地用fiddle进行演示来演示(我修改了输出,因此它不会是警报)。