感谢您阅读我的问题。我使用 Google Map API 来解析 XML。XML 数据由 MFC 生成,然后我将其发送到 HTML,<input type="hidden" name="XMLData" id="XMLfromMFC" value="" />.
然后我使用 JavaScript 解析这个 XML 字符串并做一些工作,但是当我单击一个将解析 XML 字符串的按钮时,发生错误“无法从 getElementsByTagName 获取数据:它为空或未定义。
但是 JS 代码是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>