2015-05-14 32 views
2

我有,看起來就像這麼多節點的XML文件:如何通過JavaScript的元素名稱獲取子元素?

<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文件中的元素像這樣:

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

但我很難搞清楚如何深入瞭解每個地圖項目元素內的子元素,如位置名稱圖標路徑。爲了抓住這些孩子元素的價值並對他們做些什麼,我需要做些什麼?

+0

這是一個工作[小提琴](http://jsfiddle.net/gwnrrngv/).. – Prasanth

+0

如果其中一個答案解決了您的問題,您應該upvote和/或接受 – jcuenod

回答

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再次切換。

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證明證明(我修改了輸出,所以它不會是一個警告)。