Создать правильно отформатированный XML из DOM в JavaScript - PullRequest
1 голос
/ 13 марта 2012

У меня проблемы с получением документа DOM (или узла в нем) и сериализацией его в правильно отформатированный xml. Мне нужно сделать это как инструменты, которые я буду загружать часть документа, чтобы понимать только XML, а не HTML с его неправильно закрытыми элементами. В качестве примера я в настоящее время очищаю (среди многих) http://studentlund.se, который демонстрирует мои проблемы с элементами img, которые не закрываются.

Например, если я выполню в консоли chromes следующее:

$('<div>').append($('body ul:first li:last')).html()

Я получу:

<li><a href="http://studentlund.se/feed/"><img src="http://studentlund.se/wordpress/wp-
content/themes/studentlund/pics/rss.png" alt="RSS"></a></li>

Элемент img не закрыт, поэтому мой анализатор xml завершится ошибкой.

Если я использую XMLSerializer:

n = $('body ul:first li:last').get(0)
new XMLSerializer().serializeToString(n)

Я получу тот же, неправильно отформатированный XML:

<li><a href="http://studentlund.se/feed/"><img src="http://studentlund.se/wordpress/wp-content/themes/studentlund/pics/rss.png" alt="RSS"></a></li>

Все, что мне нужно, - это возможность выгружать RAW DOM узла в правильно отформатированную строку XML, чтобы я мог использовать его с моими инструментами XML, возможно ли это?

1 Ответ

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

Попробуйте создать XML-документ, а затем сериализовать его в строку, что-то вроде этого:

n = $('body ul:first li:last').get(0);
var doc = document.implementation.createDocument('', '', null);
doc.appendChild(n);
var xml = new XMLSerializer().serializeToString(doc);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...