You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dot文件中转义<、>等字符以正常渲染Graphviz图形?

问题描述

我生成了如下Graphviz图形代码,但该图形无法正常渲染,原因是节点2的for循环条件中的<字符。请问如何转义<、>及其他类似特殊字符?

strict digraph {
0 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">int l0;<BR ALIGN="LEFT"/>l0 = 0;<BR ALIGN="LEFT"/></TD></TR></TABLE>>]
2 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">range loop(l0 = 0;l0 < 1000000;l0++)<BR ALIGN="LEFT"/></TD></TR></TABLE>>]
3 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">m[(l0*4)+1024] = 2236;<BR ALIGN="LEFT"/></TD></TR></TABLE>>]
4 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">proc_exit(0);<BR ALIGN="LEFT"/><BR ALIGN="LEFT"/></TD></TR></TABLE>>]
0 -> 2
2 -> 3
2 -> 3
2 -> 4
3 -> 2
}
解决方法

你使用的是Graphviz的HTML-like标签(即label=<<TABLE>...</TABLE>>格式),这类标签遵循HTML的字符转义规则,特殊字符必须替换为对应的HTML实体才能正常解析:

  • < 转义为 &lt;
  • > 转义为 &gt;
  • " 转义为 &quot;
  • & 转义为 &amp;

修正后的代码如下(重点修改了节点2中的<为&lt;):

strict digraph {
0 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">int l0;<BR ALIGN="LEFT"/>l0 = 0;<BR ALIGN="LEFT"/></TD></TR></TABLE>>]
2 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">range loop(l0 = 0;l0 &lt; 1000000;l0++)<BR ALIGN="LEFT"/></TD></TR></TABLE>>]
3 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">m[(l0*4)+1024] = 2236;<BR ALIGN="LEFT"/></TD></TR></TABLE>>]
4 [shape=none;label=<<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="0"><TR><TD BORDER="0" ALIGN="LEFT" COLSPAN="2">proc_exit(0);<BR ALIGN="LEFT"/><BR ALIGN="LEFT"/></TD></TR></TABLE>>]
0 -> 2
2 -> 3
2 -> 3
2 -> 4
3 -> 2
}

如果使用普通字符串标签(label="..."格式),则需要用反斜杠\转义特殊字符,例如:

2 [label="range loop(l0 = 0;l0 \< 1000000;l0++)"]

但HTML-like标签更适合多行文本和格式化布局,推荐优先使用HTML实体转义的方式。

内容的提问来源于stack exchange,提问作者Ali Qanbari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:58:12