如何使用nodejs将svg节点保存到文件中?
我正在使用d3通过一个小帮手包: https : //www.npmjs.com/package/d3-node
我使用d3-node创build了我的svg文件,下面是代码。
const D3Node = require('d3-node') var d3n = new D3Node() var svg = d3n.createSVG() .style("width","1920px") .style("height","1080px") .attr("preserveAspectRatio","true") .html(firstTemplate) .append("myCustomTag")
在此之后,我不知道如何保存输出。 主要的问题是在myCustomTag
。
console.log(d3n.d3Element.select("svg").node().innerHTML)
这行应该输出我的SVG,它的确如此,除了myCustomTag
变成mycustomtag
和我的SVG被损坏。
我试过select("svg").node().outerHTML
, select("svg").html()
,innerText,我什么也找不到。
在这种情况下,我不能使用innerHTML,有没有办法直接从d3variables存储svg文件?
你可以使用xmlserializer,因为SVG是XML,而XML是区分大小写的。 像这样的东西适合我 :
const D3Node = require('d3-node'); const xmlserializer = require('xmlserializer'); const d3n = new D3Node(); var svg = d3n.createSVG() .style("width","1920px") .style("height","1080px") .attr("preserveAspectRatio","true"); svg.append("myCustomTag"); console.log(xmlserializer.serializeToString(svg.node()));
HTML不区分大小写,所以当你尝试使用HTML方法来序列化的东西,你不一定会得到你想要的。