Есть ли способ загрузить файл XML, экранировать все найденные символы & и затем проанализировать его? - PullRequest
1 голос
/ 01 марта 2012

Я пытаюсь загрузить файл XML, но в содержимом XML есть амперсанды. Есть ли способ избежать их в коде? Вместо того, чтобы редактировать фактический файл XML? Все остальные ответы, которые я нашел, предложили мне отредактировать код перед загрузкой его с помощью Javascript, но это не вариант для меня, потому что я извлекаю его из базы данных, которая постоянно меняется.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 01 марта 2012

Из чего я получаю от вас вопрос в том, что вы хотите заменить амперсанды? Если так, то я на самом деле только что разобрался с этим вопросом на днях.

То, как я подошел, я загрузил XML-файл, а затем взял response.Text, который преобразует объект файла XML в строку и кодирует его в шестнадцатеричный формат. Затем я заменил все "% 26", который является шестнадцатеричным для "&", на "& _amp;" (Уберите подчеркивание! Сообщение преобразует его в «&»), что XML может понять. Затем я расшифровал его и снова загрузил как строку. Это все, что вам нужно сделать. Вот пример кода ...

var x;

function loadXMLFile(xmlFile){
   var xmlhttp = new window.XMLHttpRequest();
   xmlhttp.open("GET",xmlFile,false);
   xmlhttp.send(null);

   //encodes the xml, replaces all invalid characters with their hex value, decodes the xml, then parses it.
   var encoded = encodeURIComponent(xmlhttp.responseText);
   var replaced = encoded.replace(/%26/g,"&");  // &
   var decoded = decodeURIComponent(replaced);

   //Pass in the new XML string, which turns into an XML Object which you can parse.
   parser=new DOMParser();
   xmlDoc=parser.parseFromString(decoded,"text/xml");

   x=xmlDoc.getElementsByTagName("Sample_Tag");
  }
...