XML parsing in JavaScript
Это кстати тоже на одном из собеседований спросили, в Тридионе, если быть точнее. Они там не любят фреймворки и весь javascript пишут руками. Даже не представляю какие там спагетти.
В общем после недолгих расспросов что лучше лучше для общения с сервером XML или JSON (да вообще одинаково по-моему) был задан вопрос вопрос "как распарсить xml в javascript?". Я ляпнул первое что в голову пришло - есть специальный объект.
if(window.ActiveXObject) {
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async=false;
xml.loadXML(s);
return xml;
} else if(window.DOMParser) {
var parser = new DOMParser();
return parser.parseFromString(s,'text/xml');
} else {
throw "Загрузка XML не поддерживается браузером";
}
Но судя по всему от меня ожидали ответа что-то вроде "xml приходит в поле xhr.responseXML а json в xhr.responseText" и меня спросили, "а еще?!" Ну я не терялся и сказал что можно через обычное DOM дерево попробовать. Я, правда, ступил и сказал через document.createDocumentFragment на самом деле он тут не при чем. Парсить можно вот так:
var div = document.createElement("div")
div.innerHTML = "<qwerty>123</qwerty>";
div.querySelectorAll("*")
Кошерный это способ или нет, это не важно, но парсить можно. А мне ответ судя по реакции не защитали.
А я продолжал рассказывать, что если совсем скучно то можно парсить xml регулярками и сабстрингами. Вот тут Остапа понесло в рассказ о SAX парсере ;) Так что парсить XML в javascript можно как угодно.
Свежие комментарии