从 XML DOM 对象中获取完整的 XML 源

发布于 2024-10-15 15:12:23 字数 533 浏览 2 评论 0原文

用于在浏览器内呈现漂亮的交互式图表的“Highcharts”库具有导出功能,该功能将其内部使用的 SVG 发送到某个服务器端应用程序,该应用程序对其进行光栅化并将生成的 PNG、JPEG 或 PDF 返回以供下载。

我的问题是,可以在浏览器中显示的背景图像和符号在 Highcharts 导出之前被丢弃,但我想要它们。

所以我注释掉了删除所有 SVG 标签等的所有内容(顺便说一句,他们正在使用正则表达式来清理内部使用的 SVG...)。

但他们对这些 标签使用了一些非标准属性,并且它们的坐标以不同的方式映射到图像,因此我必须重新计算并丢弃属性。

所以我使用 DOMParser 解析了他们的 SVG 并做了我应该做的事情,机器人现在我正在寻找一种优雅(或简单)的方法来获取原始 xml - 我已经看到在 Internet Explorer 中可以获取原始 xml使用 DOM 文档对象的 xml 属性 - 对于所有其他浏览器是否有等效的东西?我现在正在搜索很长一段时间,但找不到任何真正有用的东西。谢谢 :)

The "Highcharts" library for rendering nice interactive Charts inside the browser has an export function, which sends it's internally used SVG to some server side application that rasterizes it and sends the resulting PNG, JPEG or PDF back for downloading.

My problem is that background images and symbols that can be displayed inside the browser are being thrown away before exporting by Highcharts, but I want them.

So I commented out everything that deletes all their SVG <image> tags and so on (they are using regular expressions for sanitizing their internally used SVG, by the way...).

But they are using some non-standard attributes for these <image> tags and their coordinates are mapped differently to the images, so I have to recalculate things and throw away attributes.

So I parsed their SVG using DOMParser and did the stuff I should be doing, bot now I'm searching for an elegant (or simple) way to get the raw xml - I've seen that in Internet Explorer it's possible to get the raw xml using the xml attribute of the DOM Document Object - Is there something equivalent for all the other browsers? I'm searching a whole while now and could not find anything really helpful. Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别念他 2024-10-22 15:12:23

您可以在非 IE 浏览器中使用 XMLSerializer。以下函数将在所有主要浏览器中序列化 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 "";
}

You can use XMLSerializer in non-IE browsers. The following function will serialize an XML node in all major browsers:

function serializeXmlNode(xmlNode) {
    if (typeof window.XMLSerializer != "undefined") {
        return (new window.XMLSerializer()).serializeToString(xmlNode);
    } else if (typeof xmlNode.xml != "undefined") {
        return xmlNode.xml;
    }
    return "";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文