我正在通过一个小帮手包使用d3:https://www.npmjs.com/package/d3-node
我使用d3-node创建了我的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")
Run Code Online (Sandbox Code Playgroud)
在此之后,我不知道如何保存输出.主要问题在于myCustomTag.
console.log(d3n.d3Element.select("svg").node().innerHTML)
Run Code Online (Sandbox Code Playgroud)
这行应该输出我的svg,它确实输了,除了那个myCustomTag变成了mycustomtag我的svg 变坏了.
我试过了select("svg").node().outerHTML,select("svg").html()innerText,我找不到任何东西.
在这种情况下我不能使用innerHTML,有没有办法直接从d3变量存储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()));
Run Code Online (Sandbox Code Playgroud)
HTML不区分大小写,因此当您尝试使用HTML方法序列化事物时,您不一定会获得所需的内容.