我正在尝试使用JavaScript开发网站
目标是获取xml文件的数据,并将其转换为变量。
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
initMap(this);
}
};
xhttp.open("GET", "https://applications002.brest-metropole.fr/WIPOD01/Transport/REST/getGeolocatedVehiclesPosition?format=xml&route_id=1&trip_headsign=Fort%20Montbarey", true);
xhttp.send();
function initMap(xml) {
var xlat, xlon, i, xmlDoc;
xmlDoc = xml.responseXML;
xlat = xmlDoc.getElementsByTagName('Lat');
xlon = xmlDoc.getElementsByTagName('Lon');
/*
xlat = xml.responseXML.getElementsByTagName('lat');
xlon = xml.responseXML.getElementsByTagName('lon');
*/
for (i = 0; i < xlat.length; i++) {
var latcode = xlat[i].childNodes[0].nodeValue;
var loncode = xlon[i].childNodes[0].nodeValue;
//var myLatLng = "{lat: " + latcode + ", lng: " + loncode +"}";
//var myLatLng = {lat: latcode, lng: loncode};
var marker = new google.maps.Marker({
position: new google.maps.LatLng(latcode, loncode),
map: map,
});
}
[...]
}
但我收到此代码错误:Uncaught TypeError: Cannot read property 'responseXML' of undefined
@ - &gt; xmlDoc = xml.responseXML;
我已经尝试按xmlDoc = xml.responseXML;
xmlDoc = this.responseXML;
但是我获得了getElementByTagName的一些错误:Uncaught TypeError: Cannot read property 'getElementsByTagName' of undefined
感谢您的帮助! 雅克
编辑:代码来源:Google Doc是的,现场演示适用于我,我正在使用谷歌浏览器
答案 0 :(得分:0)
对于Uncaught TypeError: Cannot read property 'getElementsByTagName' of undefined
错误,很有可能XML文件中的一项没有定义您要查找的标签值。扫描xml,并确保每个条目中都有该标签的值。
我不知道如何处理不完整的文档。
关于Uncaught TypeError: Cannot read property 'responseXML'
,我发现很多页面上的页面看起来都很好。到我现在忽略它的地步;但我希望有人来解释它,以便我可以解决任何潜在的问题。
答案 1 :(得分:0)
因为您没有在xlat[i]
和xlon[i]
处给出子节点名称。
将其更改为
/*var latcode = xlat[i].childNodes[0].nodeValue; var loncode = xlon[i].childNodes[0].nodeValue;*/
到
/*
var latcode = xlat[i].getElementsByTagName("give child node tag name")[0].childNodes[0].nodeValue;
var loncode = xlon[i].getElementsByTagName("give child node tag name")[0].childNodes[0].nodeValue;
*/