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();
}
```
还是上文的教程
//查看图形的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); //以窗口的方式展示处理
}));
结果展示:
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回显。