无法使用getElementsByTagName获取数据

时间:2012-10-11 09:09:21

标签: javascript dom mfc xml-parsing google-maps-api-2

感谢您阅读我的问题。我使用Google Map API来解析XML。 XML数据由MFC生成,然后我将其发送到HTML <input type="hidden" name="XMLData" id="XMLfromMFC" value="" />.

然后我使用JavaScript来解析这个XML字符串并做一些工作,但是当我点击一个解析XML字符串的按钮时,发生错误“无法从getElementsByTagName获取数据:它是null或未定义。

但JS代码是example code of Google Map API,所以我不知道如何解决这个问题。请帮帮我!

附加信息:我在MFC中使用WebBrowser加载一个HTML页面,所有代码都在.GXml是Google Map API的命名空间,它有这个方法。我想如果MFC WebBrowser不支持getElementsByTagName()方法?如果是这样,如何解决?

function loadXMLData()
{
    var strXML = document.getElementById('XMLfromMFC');
    var xmlDoc = GXml.parse(strXML);

    var polylines = xmlDoc.documentElement.getElementsByTagName("road");

    for (var i = 0; i < polylines.length; i++) {
         addPolylines(polylines[i]);
      }
}

function addPolylines(node)
{
   var points = node.getElementsByTagName("point");
   var pts = [];

   for (var i = 0; i < points.length; i++)
   {
   pts[i] = new      GLatLng(parseFloat(points[i].getAttribute("lat")),parseFloat(points[i].getAttribute("lon")));
   }
           for (var i = 0; i < points.length; i++) {
               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lon")));
           }   

           var polyline = new GPolyline(pts);
           map.addOverlay(polyline);
           return polyline;
       }

XML数据如下所示:

<?xml version="1.0" encoding="utf-8"?>
<AllRoadsData>
<road>
<id>1</id>
<roadName>first</roadName>
<roadWidth>2</roadWidth>
<pointsNum>9</pointsNum>
<maxSpeed>80</maxSpeed>
<point lon="42.361081" lat="-71.070213"/>
<point lon="42.361128" lat="-71.068625"/>
<point lon="42.361192" lat="-71.066844"/>
</road>
<road>
<id>2</id>
<roadName>second</roadName>
<roadWidth>4</roadWidth>
<pointsNum>5</pointsNum>
<maxSpeed>30</maxSpeed>
<point lon="42.357291" lat="-71.065063"/>
<point lon="42.358290" lat="-71.065085"/>
</road>
</AllRoadsData>

1 个答案:

答案 0 :(得分:0)

您使用的是已弃用的Google Maps API v2,不建议用于新开发,并且可能最早在2013年5月停止工作。您应该转到v3 API(它不包含任何此功能) )。

您应该查看您的javascript错误,我怀疑xmlDoc.documentElement为null。