Получение полного источника XML из объекта XML DOM - PullRequest
2 голосов
/ 04 февраля 2011

Библиотека «Highcharts» для рендеринга хороших интерактивных диаграмм в браузере имеет функцию экспорта, которая отправляет SVG-файл, который используется внутри, в какое-либо серверное приложение, которое растрирует его, и отправляет полученный PNG, JPEG или PDF обратно для загрузки. *

Моя проблема в том, что фоновые изображения и символы, которые могут отображаться в браузере, выбрасываются перед экспортом в Highcharts, но я хочу их.

Итак, я закомментировал все, что удаляет все их теги SVG <image> и т. Д. (Между прочим, они используют регулярные выражения для очистки своих внутренних SVG-файлов ...).

Но они используют некоторые нестандартные атрибуты для этих тегов <image>, и их координаты по-разному сопоставляются с изображениями, поэтому мне приходится пересчитывать вещи и выбрасывать атрибуты.

Итак, я проанализировал их SVG с помощью DOMParser и сделал то, что должен был сделать, но теперь я ищу элегантный (или простой) способ получить сырой XML - я видел, что в Internet Explorer можно получить необработанный xml с помощью атрибута xml объекта документа DOM - есть ли что-то эквивалентное для всех других браузеров? Я искал целое время и не мог найти ничего действительно полезного. Спасибо:)

1 Ответ

5 голосов
/ 04 февраля 2011

Вы можете использовать XMLSerializer в браузерах без IE. Следующая функция сериализует узел XML во всех основных браузерах:

function serializeXmlNode(xmlNode) {
    if (typeof window.XMLSerializer != "undefined") {
        return (new window.XMLSerializer()).serializeToString(xmlNode);
    } else if (typeof xmlNode.xml != "undefined") {
        return xmlNode.xml;
    }
    return "";
}
...