Парсинг HTML, загруженного при помощи XMLHttpRequest
Мне нужно обработать страницу при помощи javascript и отослать результаты на сервер, результаты или саму страницу в браузере отображать не нужно. Столкнулся с проблемой, при попытке распарсить responseText получаю XMLDocument вместо HTMLDocument:
var response = loginRequest.responseText; var htmlDoc = new DOMParser().parseFromString(response, 'application/xhtml+xml');
Возможно ли каким-то образом получить желанный HTMLDocument?
В том то и дело, что loginRequest.responseXML=null, а XMLDocument не смог полностью распарсить HTML. Т.е. XML получился невалидный, и толком работать с ним невозможно.
А, так у вас там HTML, а не XHTML... Это проблема — насколько я знаю, распарсить HTML сейчас можно только одним способом. Нужен существующий HTML-документ, присвойте ваш текст там в innerHTML какого-нибудь элемента.
Хм... странно... на страничке присутствует ссылка на xhtml нэймспейс:
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
А возможно ли загрузить html в скрытом окне? Чтобы пользователь не видел этого?
В принцпе, может сработать. Как-нибудь так:
document.frames["myIframe"].document.open(); document.frames["myIframe"].document.write(rawHTML); document.frames["myIframe"].document.close();
Давид Мзареулян[досье], нашел похожее решение на forum.mozilla.ru, вроде работает.
Namespace — это XML. Такое объявление имеет смысл только для валидного XHTML-документа, в HTML оно не к месту. Вообще, я бы вам скорее порекомендовал перевести свой HTML-код в XHTML, если его не слишком много. Проблем будет намного меньше.