Получите XML-файл, затем замените амперсанды "&" на "и" - PullRequest
0 голосов
/ 01 октября 2019

Браузер не читает XML-файл из-за амперсандов, таких как "&". Я хотел бы получить файл XML и заменить все "&" на "и". Возможно ли это?

Я пытался использовать функцию замены, но она не работает: 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 ]

1 голос
/ 01 октября 2019

Решение, упомянутое в ссылке jsfiddle. Замените символ на responseText, а не responseXml. Вы можете преобразовать этот xmltext в xmldocument после успешной замены необходимых символов.

http://jsfiddle.net/ogaq9ujw/2/ var response=request.responseText; var xmlText=response.replace('GM',"and");

1 голос
/ 01 октября 2019

1) Ваш запрос является синхронизированным, потому что вы используете send (..., FALSE). Асинхронная вещь в вашем случае не проблема.

2) Проверьте в консоли файл console.log (xml). Не отображать его на html странице и комментировать строку замены, поскольку отображение содержимого этой переменной может быть изменено в режиме реального времени в любое время. И посмотрите, действительно ли это атрибут pur & in.

var xml = request.responseXML;
/* var xml = xml.replace (/&/g, "and"); */
console.log (xml);

3) однако: & недопустимо в атрибуте xml, его нужно заменить на & во время создания 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...