如何使用D3.js指定自定义XML/SVG命名空间?

joh*_*odo 1 svg xml-namespaces d3.js

我试图在SVG中定义自己的命名空间,所以我可以使用自己的标签和属性.如果我理解正确,SVG应如下所示:

<svg xmlns:myns="http://www.example.com/whatever/">
  <g myns:mycustomattr="123">
    ... 
Run Code Online (Sandbox Code Playgroud)

我通过D3添加根SVG元素,但添加了一个名称空间attr失败:

var svg = d3.select("#container")
  .append("svg")
    .attr('xmlns:myns', 'http://www.example.com/whatever/') 
Run Code Online (Sandbox Code Playgroud)

上面的代码导致:NamespaceError:尝试以对名称空间不正确的方式创建或更改对象

使用D3.js将名称空间添加到SVG的正确方法是什么?

Rob*_*son 5

您只需设置d3.ns.prefix

d3.ns.prefix.myns = "http://www.example.com/whatever/";
Run Code Online (Sandbox Code Playgroud)

然后使用它:

var svg = d3.select("#container")
  .append("svg")
    .attr('myns:someAttribute', 'some value');
Run Code Online (Sandbox Code Playgroud)