无法使用dom从xml解析<link />元素

时间:2014-03-24 18:39:26

标签: javascript xml dom

我遇到了问题,这与这个问题类似:
Can't get element javascript google apps script

好吧,我正在使用DOM方法解析xml文件。在我将xml元素<link>推入之前,我没有遇到任何问题。当我把一个随机链接我没有问题。但如果我插入我的xml文件的一个真正的链接出错了。

Ι将您的一个真实链接:<link>http://www.metar.gr/index.php?option=com_jumi&fileid=12&Itemid=73&station=1483</link>并置。

任何想法出了什么问题?

这是我的代码:

downloadUrl("moredata.xml", function(data) {
      var items = data.documentElement.getElementsByTagName("item");
      for (var i = 0; i < items.length; i++) {
        var description = items[i].getElementsByTagName("description")[0].innerHTML;
        var temp        = items[i].getElementsByTagName("temp")[0].innerHTML;
        var title       = items[i].getElementsByTagName("title")[0].innerHTML;
        var windSpeed   = items[i].getElementsByTagName("windSpeed")[0].innerHTML;
        var dailyRain   = items[i].getElementsByTagName("dailyRain")[0].innerHTML;
        var latlng = new google.maps.LatLng(parseFloat(items[i].getElementsByTagName("glat")[0].innerHTML),
                                    parseFloat(items[i].getElementsByTagName("glon")[0].innerHTML));
       }
})

moredata.xml文件:

<item>
      <description>Giannena</description>
      <glat>39.62209843837158</glat>
      <glon>20.89027225971222</glon>
      <title>ipiros</title>
      <temp>-16.9°C</temp>
      <dailyRain>0.0 mm</dailyRain>
      <windSpeed>10 km/hr</windSpeed>
      <fire>2</fire>
      <outsideHumidity>88 %</outsideHumidity>
      <link>
        http://this_is_the_link.com
 </link>
  </item>
  <item>
      <description>Athina</description>
      <glat>38.08469095792561</glat>
      <glon>23.680233657360077</glon>
      <title>sterea</title>
      <temp>45°C</temp>
      <dailyRain>0.0 mm</dailyRain>
      <windSpeed>97  km/hr</windSpeed>
      <fire>3</fire>
      <outsideHumidity>99 %</outsideHumidity>
      <link>
    http://this_is_the_other_link.com
 </link>
  </item>

2 个答案:

答案 0 :(得分:0)

我想问题正在发生,因为您没有正确解析 XML 响应......

试试这个:

downloadUrl("moredata.xml", function(data) {
  xmlDoc=data.responseXML;
  var items = xmlDoc.documentElement.getElementsByTagName("item");

  for (var i = 0; i < items.length; i++) {
    var link = items[i].getElementsByTagName("link")[0].innerHTML;

  }
})

答案 1 :(得分:0)

经过大量搜索后,我发现元素<link>中的网址包含符号字符 - &gt; &放;.
&符号(&)是xml的特殊字符。所以我替换了'&' - &gt; '&amp;' 但我无法编辑动态xml文件  这是一个类似的问题:how to escape xml entities in javascript?

我正在尝试在我的javascript文件中创建一个函数来替换动态,<link>元素的所有网址都是'&amp; '到'&amp;' 任何想法,建议,例子将不胜感激!