Как я могу использовать parseXML JQuery для анализа из экранированной строки в объект XML? - PullRequest
0 голосов
/ 13 марта 2019

У меня очень большой XML-файл, экранированный с помощью < > " и т. Д. Я проверил XML и убедился, что он правильно сформирован. Я подозреваю, что существует некоторая проблема с удалением зарезервированных символов XML.

Пример: от &lt; до "<" </p>

Вот пример того, что я делаю:

xml_string = “&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;root&gt;&lt;test&gt;&lt;/test&gt;&lt;/root&gt”;
xml_object = $.parseXML(unescape(xml_string));

Я постоянно получаю ошибки "Неверный XML" от parseXML.

1 Ответ

2 голосов
/ 13 марта 2019

Функция unescape () не будет работать в этом контексте.Вместо этого вы можете использовать функцию decode () в моем ответе ниже.Это старый, но проверенный и верный.По сути, присваивая значение элементу-призраку, мы можем «убежать» от него.

var xml_string = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;root&gt;&lt;test&gt;&lt;/test&gt;&lt;/root&gt';


function decode(input) {
  var txt = document.createElement("textarea");
  txt.innerHTML = input;
  return txt.value;
}

var decodedString = decode(xml_string);
console.log('Decoded: ', decodedString);

var xml_object = $.parseXML(decodedString);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...