由于与号(&)之类的与号,浏览器无法读取xml文件。我想获取xml文件并将所有“&”替换为“ and”。有可能吗?
我尝试使用替换功能,但无法正常工作:
var xml = xml.replace(/&/g, "and");
var request = new XMLHttpRequest();
request.open("GET", "/ODDS/odds3.xml", false);
request.send();
var xml = request.responseXML;
var xml = xml.replace(/&/g, "and");
var txt = "";
var txt2 = "";
var txt3 = "";
var users = xml.getElementsByTagName("match");
for (var i = 0; i < users.length; i++) {
var names = users[i];
for (j = 0; j < names.length; j++) {
txt += "MATCH: " + " id: " + names[j].getAttribute('id') + " he: " + names[j].getAttribute('he') + " < br > ";
}
}
document.getElementById("demo").innerHTML = txt;
这是我的&
的odds3.xml。
<match id="32375537" he="Brighton & Hove Albion">
我希望输出显示来自odds3.xml的数据,从&
开始,然后将其替换为and
。感谢您的帮助!
控制台日志: 我添加了console.log(xml),但它返回了“ null”值,因为xml文件上带有“&”。
预期输出:
MATCH: id: 32375537 he: Brighton and Hove Albion
答案 0 :(得分:1)
1)您的请求是同步的,因为您使用send(...,FALSE)。在您的情况下,异步不是问题。
2)使用console.log(xml)检入控制台。 请勿在html 页面中显示它,并在替换行中添加注释,因为可以随时实时更改此var内容的显示。看看它是否真的是pur&in属性。
var xml = request.responseXML;
/* var xml = xml.replace (/&/g, "and"); */
console.log (xml);
3)但是:&在属性xml中无效,必须用&amp;替换。 在xml的生产过程中。谁生产这个xml文件?您,第三方服务或其他程序员?
4)替换&不是解决方案:假设稍后在xml中找到有效的字符串
<text> here & there </text>
它将变成
<text> here and;amp; there </text>
5)尝试使用responseText,而不是xmlResponse:这是浏览器尝试解析它之前的完整原始响应。
var xhr = new XMLHttpRequest();
xhr.open('GET', '/ODDS/odds3.xml');
xhr.onload = function() {
if (xhr.status === 200) {
alert('response is' + xhr.responseText);
}
else {
alert('Request failed. Returned status of ' + xhr.status);
}
};
xhr.send();
答案 1 :(得分:1)
jsfiddle链接中提到的解决方案。替换responseText上的字符而不是responseXml。您可以在成功替换所需字符后将该xmltext转换为xmldocument。
http://jsfiddle.net/ogaq9ujw/2/ var response=request.responseText;
var xmlText=response.replace('GM',"and");