Получить подробную информацию об ошибке при разборе XML - PullRequest
0 голосов
/ 11 мая 2019

Пожалуйста, примите во внимание этот код:

var fileURL = "example.xml";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
  if (xhr.readyState == xhr.DONE && xhr.status == 200) {
    data = xhr.responseXML;
    console.log(data);
  }
}
xhr.open('GET', fileURL);
xhr.send();

Если мой example.xml не является правильным XML (у моего был дополнительный символ новой строки перед узлом объявления), тогда xhr.responseXML равен null.

Очевидно, что где-то внутри xhr.responseText был передан синтаксический анализатор XML, и это не удалось. Я хотел бы получить более подробную информацию об ошибке, например номер строки / столбца, на котором остановился анализатор, и тип ошибки.

Конечно, я могу явно передать текст ответа парсеру:

   if (data === null) {
     var parser = new DOMParser();
     var doc = parser.parseFromString(xhr.responseText, "application/xml");
     console.log(doc.getElementsByTagName("parsererror"));
   }

Но то, как DOMParser сообщает об ошибках, довольно странно - это xml-узел с некоторым содержимым в стиле html + css. Я не уверен, насколько безопасно извлекать информацию об ошибках из такого объекта, поскольку он не соответствует какому-либо конкретному стандарту.

Итак, я ищу самый стандартный способ уловить искаженную ошибку XML с как можно большей детализацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...