mxGraph(JAVA)实现cell导出为xml或者直接略过xml文件直接自定义cell的shape

mxGraph有自带的类mxStencil能实现解析xml文件,绘制模板,注册器实现该模板与名字绑定,那么怎么实现将模板输出为该格式的XML文件,或者直接不使用xml文件,直接进行模板绘制并保存

mxGraph是一个图形库,它可以通过Java代码来实现对图形的操作。
导出cell为xml文件可以使用mxCodec类的encode方法来实现,具体实现方法如下:

mxCodec codec = new mxCodec();
Node node = codec.encode(graph.getModel());
String xml = mxXmlUtils.getXml(node);


如果要直接自定义cell的形状,可以使用mxGraph的setCellStyles方法:


```java
graph.getModel().beginUpdate();
try
{
    graph.setCellStyles(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_RECTANGLE, new Object[] { cell });
}
finally
{
    graph.getModel().endUpdate();
}


```

  • 这篇博客: Mxgraph 使用教程(8):mxgraph进行查看xml 和 xml回显中的 1.xml回显 准备工作 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 还是上文的教程
    在这里插入图片描述

    • 查看mxgraph图形的xml
     //查看图形的xml
        document.body.appendChild(mxUtils.button('View XML', function()
              {
                 var encoder = new mxCodec();
                 var node = encoder.encode(graph.getModel());
                 mxUtils.popup(mxUtils.getPrettyXml(node), true);   //以窗口的方式展示处理
              }));
    

    结果展示:
    在这里插入图片描述

    • xml回显
    var xml=
    '<mxGraphModel>                                                                                             '+           
    '  <root>                                                                                                                                          '+
    '    <mxCell id="0"/>                                                                                                                              '+
    '    <mxCell id="1" parent="0"/>                                                                                                                   '+
    '    <app appId="" appName="" protocol="" ip="" port="" context="" heartBeatUrl="" id="2">                                                         '+
    '      <mxCell style="verticalLabelPosition=top;verticalAlign=bottom;shadow=1;fillColor=#FFFFFF" vertex="1" connectable="0" parent="1" type="app"> '+
    '        <mxGeometry x="100" y="320" width="20" height="40" as="geometry"/>                                                                        '+
    '      </mxCell>                                                                                                                                   '+
    '    </app>                                                                                                                                        '+
    '  </root>                                                                                                                                         '+
    '</mxGraphModel>                                                                                                                                   ';
    var doc = mxUtils.parseXml(xml);
    var codec = new mxCodec(doc);
    codec.decode(doc.documentElement, graph.getModel());
    

    将上面获得的xml 传入即可获得xml回显。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632