2012-04-28 2 views
1

Я изучаю javascript и не очень хорошо, я пытаюсь использовать код для создания карты google v3 api с местами поиска, которые загружаются из XML-файла.Javascript xml nightmare

Устранить проблему, много инфатов, но вот этот: я не могу получить доступ к данным в xml-файле, я использовал пример и попытался настроить его, прочитав и попробовав другой код, но безуспешно.

Не доступ к данным, используя мой файл XML, это мой формат XML с кодом JS ниже:

<markers style="MEDIUM"> 
     <marker> 
     <title>McDonalds</title> 
     <lat>55.5452</lat> 
     <lng>34.3755</lng> 
     <markerId>0</markerId> 
     <countryCode>GB</countryCode> 
     <address>Somewhere in London</address> 
     <description>Get a free toy with every happy meal!</description> 
     </marker> 
    </markers> 

Это JS из моего HTML файла.

downloadUrl("london.xml", function(doc) { 
      var xmlDoc = xmlParse(doc); 
      var markers = xmlDoc.documentElement.getElementsByTagName("marker"); 

      for (var i = 0; i < markers.length; i++) { 
      // obtain the attribues of each marker 
       var lat = parseFloat(markers[i].getElementsByTagName("lat")); 
       var lng = parseFloat(markers[i].getElementsByTagName("lng")); 
       var point = new google.maps.LatLng(lat,lng); 

       var description = markers[i].getElementsByTagName("description"); 
       var title = markers[i].getElementsByTagName("title"); 
      alert(title); 
       // create the marker 
       var marker = createMarker(point,title,description); 
      } 
     alert(i); 

Я предполагаю, что это что-то очень простое, например, как связывающая узлы, но я не могу понять это и думал, что помощь или совет будет спасти меня некоторые вменяемости, спасибо ребята.

+0

Что происходит, когда вы запускаете код? – Claudiu

+0

Я получаю 1 предупреждение: undefined С того, что играл с нами, я должен получать предупреждение с указанием значения по умолчанию в моем оповещении – Renai

+0

Извините за это, но вы могли бы добавить что-то для этих предупреждений, может быть, alert ('1:' + title) и alert ('2:' + i) – Claudiu

ответ

1

Ну, это трудно сказать определенно, где все проблемы ... Впрочем, первая проблема, которую я вижу в том, что вы пытаетесь getElementsByTagName от documentElement, но вы должны принять его от xmlDoc:

var markers = xmlDoc.getElementsByTagName("marker"); 

Затем вы пытаетесь преобразовать NodeList объект в float. Он должен быть переделан в:

var lat = parseFloat(markers[i].getElementsByTagName("lat")[0].textContent); 
var lng = parseFloat(markers[i].getElementsByTagName("lng")[0].textContent); 

Далее, я считаю, description и title сохраняется в textContent первых узлах с соответствующими именами. Так,

var description = markers[i].getElementsByTagName("description")[0].textContent; 
var title = markers[i].getElementsByTagName("title")[0].textContent; 

И не забудьте проверить правильность формата файла XML (включая <?xml ...?> заголовок и т.д.)

+0

спасибо, но это не решает проблему, но я все равно пытаюсь исправить это, но – Renai

+0

@Renai, пожалуйста, проверьте обновление сообщения, подумайте о том, чтобы взять маркеры из 'xmlDoc'. – VisioN

+0

Да, легенда !!! Большое спасибо человеку. Как это было так просто для вас? Я еще очень новичок в j/s + xml и не понимаю, как они работают вместе, хотя я продолжайте играть, но я не всегда знаю, что делаю. спасибо снова. – Renai