获取XML文件,然后将与号“&”替换为“ and”

时间:2019-10-01 07:52:14

标签: javascript jquery xml

由于与号(&)之类的与号,浏览器无法读取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文件上带有“&”。 enter image description here

预期输出:

MATCH: id: 32375537 he: Brighton and Hove Albion

2 个答案:

答案 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 &amp; 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");