私の問題を読んでくれてありがとう。Google Map API を使用して XML を解析しています。XML データは MFC によって生成され、それを HTML に送信します。<input type="hidden" name="XMLData" id="XMLfromMFC" value="" />.
次に、JavaScript を使用してこの XML 文字列を解析し、いくつかの作業を行いますが、XML 文字列を解析するボタンをクリックすると、「getElementsByTagName からデータを取得できません: null または未定義です。
しかし、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>