dya*_*ugh 2 xml mxgraph draw.io
我在 draw.io 中创建了一个形状并将其导出以获取其 XML 文件,如下所示:
<mxlibrary>[{"xml":"vZTNcoIwEMefJnckXjxarF7aXvoEKawk05Blwirap+8SooLa0XbaZoaZ7H8/sssPImRW7VZe1foZC7BCPgqZeUTqd9UuA2tFmphCyIVI04QfkS6/8E6CN6mVB0f3JKR9wlbZDfRKLzS0t1EoPW5qIR88kiL1FuSE7ZgJnmA3Oj1H5yA/hB5bGHUVQmNLK8AKyO85pDUF6Rgxi2kaTKkPaTKKqonNHXNPQ/Imznl9Znkx8wsSNBeD89yugCKO22pD8FqrvPO2DIw1TRUfspjwttGqwPZgkMd3yNCiD6VkFhZ71sbagT4Lq9PR0UBfhsW6sqZ0rFlYU1eYzzeufArWYtpRgcZ8DKhUuB1YUJghsjGZJNS32M69x7aJyt2YhzjTn+H8DZrT21/wX4A8A9O9H5MrO48yYX0V1xjPObz/5rMfY7j59yXf58Xm6TYLvtFl9wk=","w":190,"h":130,"aspect":"fixed","title":"notes"}]</mxlibrary>
Run Code Online (Sandbox Code Playgroud)
是否可以使用此数据插入新顶点?我什至不知道从哪里开始这个。
我知道这个问题已经得到解答,但我会告诉大家对我有帮助的提示。在draw.io 中,您可以转到“文件”菜单,然后转到“属性”,您可以选择禁用压缩。因此,保存 xml 时,它会更具可读性且更易于编辑。
您正在查看使用Deflate压缩算法压缩的 XML 。很明显,您需要在使用它之前解压缩它。
JGraph是优秀的 Draw.io绘图/图表应用程序的创建者,提供了一个在线解压转换工具。这是mxGraphModel使用该工具解压缩后与您的压缩数据相关联的:
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="group;rotatable=0;" vertex="1" connectable="0" parent="1">
<mxGeometry width="190" height="130" as="geometry"/>
</mxCell>
<mxCell id="3" value="Notes" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;strokeColor=#CCCCCC;fillColor=#999999;fontColor=#FFFFFF;align=left;spacingLeft=4;resizable=0;movable=0;editable=0;connectable=0;allowArrows=0;rotatable=0;" vertex="1" parent="2">
<mxGeometry width="190" height="30" as="geometry"/>
</mxCell>
<mxCell id="4" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;strokeColor=#CCCCCC;align=left;verticalAlign=top;spacingLeft=4;movable=0;resizable=0;connectable=0;allowArrows=0;rotatable=0;" vertex="1" parent="2">
<mxGeometry y="30" width="190" height="100" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
Run Code Online (Sandbox Code Playgroud)
另请参阅从Draw.io站点上的mxfiles 中提取 XML。
终于让这个工作了。查看此处的mxCodec示例。因此,首先,按照 kjhughes 的描述或通过 Draw.io 中的 Extras -> Edit Chart 菜单获取节点的未压缩 xml。然后你可以像这样添加节点:
var xml = '<root><mxCell id="2" value="Hello," vertex="1"><mxGeometry x="20" y="20" width="80" height="30" as="geometry"/></mxCell><mxCell id="3" value="World!" vertex="1"><mxGeometry x="200" y="150" width="80" height="30" as="geometry"/></mxCell><mxCell id="4" value="" edge="1" source="2" target="3"><mxGeometry relative="1" as="geometry"/></mxCell></root>';
var doc = mxUtils.parseXml(xml);
var codec = new mxCodec(doc);
var elt = doc.documentElement.firstChild;
var cells = [];
while (elt != null)
{
cells.push(codec.decode(elt));
elt = elt.nextSibling;
}
graph.addCells(cells);
Run Code Online (Sandbox Code Playgroud)
替换xml为您的节点的 xml。另外,请确保不要包含
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
Run Code Online (Sandbox Code Playgroud)
因为这些是默认的父级,它们的包含将通过导致无限递归来破坏图表。