← 开发笔记

在共享图片旁保留可编辑的 draw.io 原文件

在发布的图片旁保留可编辑的图形原文件。图片展示当前结果,原文件则保留下一次修改所需的形状、连接与标签。

draw.io 格式指南推荐使用未压缩 XML 格式 .drawio。SVG 和 PNG 也可以包含图数据,因此不能仅凭图片扩展名判断文件是否可编辑。即使导出文件嵌入了图数据,也应保留明确的原文件。

示例流程

此图与下方 XML 具有相同的三个顶点和两条有向连接。它是为本文渲染的,不是编辑器截图或导出结果。

此图与下方 XML 具有相同的三个顶点和两条有向连接。它是为本文渲染的,不是编辑器截图或导出结果。

保存为 request-flow.drawio

<mxfile host="app.diagrams.net">
  <diagram id="request-flow" name="Request flow">
    <mxGraphModel>
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="request" value="Request" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="40" width="160" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="validate" value="Validate" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="160" width="160" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="response" value="Response" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="280" width="160" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="first" edge="1" parent="1" source="request" target="validate" style="endArrow=block;">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
        <mxCell id="second" edge="1" parent="1" source="validate" target="response" style="endArrow=block;">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>

带有 vertex="1" 的 mxCell 元素定义三个节点。两条边引用各自的源和目标 ID,mxGeometry 则提供位置与尺寸。修改可见标签与修改边所引用的 ID 是两回事。

在编辑器中打开文件。完整文件包含外层 mxfile 和 diagram 元素。如果使用 Extras → Edit Diagram,源编辑器文档描述的是当前页面的 mxGraphModel;不要将页面片段与完整文件的外层结构混淆。

文件 用途
request-flow.drawio 纳入版本控制的可编辑原文件
request-flow.svg 或 .png 共享或渲染输出;需检查是否嵌入图数据

修改后重新打开原文件,确认每条箭头的方向,再导出新的共享图片。请同时查看原文件差异与渲染结果:格式变化可能掩盖细小的关系变化。

本例在本地检查 XML 结构、ID 唯一性与连接引用。云存储、编辑器界面交互以及导出往返不在检查范围内。请根据使用的账户与编辑器另行选择存储集成。代码搜索指南介绍了如何缩小仓库中要检查的文件范围。

讨论