使用SVG+;Java用于灵活的信息显示,这是否可行?

使用SVG+;Java用于灵活的信息显示,这是否可行?,java,svg,Java,Svg,我需要创建复杂电气系统的“模拟”显示。我可以在Visio中访问实时状态信息和系统框图 这是否可行的方法: 从系统框图创建SVG图形 使用SVG属性标记感兴趣的SVG元素 将SVG DOM加载到java中 找到标记的元件,并根据系统状态信息对其进行修改(例如,如果元件“处于报警状态”,则使其变为红色) 使用BATIK将SVG渲染为PNG以显示(使用swing组件:JSVGCanvas) 一个关键需求是在部署应用程序后修改SVG的灵活性。该应用程序能够根据SVG中的标记灵活地引入不同的“数据点” 有

我需要创建复杂电气系统的“模拟”显示。我可以在Visio中访问实时状态信息和系统框图

这是否可行的方法:

  • 从系统框图创建SVG图形

  • 使用SVG属性标记感兴趣的SVG元素

  • 将SVG DOM加载到java中

  • 找到标记的元件,并根据系统状态信息对其进行修改(例如,如果元件“处于报警状态”,则使其变为红色)

  • 使用BATIK将SVG渲染为PNG以显示(使用swing组件:JSVGCanvas)

  • 一个关键需求是在部署应用程序后修改SVG的灵活性。该应用程序能够根据SVG中的标记灵活地引入不同的“数据点”

    有人成功地使用了类似的策略吗? 我应该期待什么陷阱?
    SVG编辑工具的发展方向是什么?

    我为健康状态显示做了类似的工作。实际上,我对数据对象进行了注释,并让它们将其状态推送到一个哑SVG文件中,但机器应该大致相同,只是颠倒过来

    好处:

    • 使复杂的动态图表非常容易渲染
    • 与我使用过的所有其他工具相比,图表维护是一件轻而易举的事情
    • 能够通过SVG直接定位web应用程序,或者通过服务器提供的图像间接定位web应用程序
    陷阱:

    • 数据绑定可能会很痛苦,这取决于您希望可视化的复杂程度。如果您想对SVG进行注释以将数据拉入自身,那么这可能是最困难的部分
    • 您需要很好地掌握XPath才能做任何事情,哪怕是稍微有点棘手的事情。调试XPath表达式从来都不难,但往往很乏味
    编辑:
    . 还有一些其他的矢量图形编辑器可以直接或作为导出目标来处理SVG,但我所见过的这些编辑器中没有一个接近Inkscape。它不支持当前SVG规范中的所有功能,但听起来它已经足够满足大多数(如果不是全部)需求。当您需要SVG不支持的东西时,也可以不手动编辑SVG文件。

    您也应该看看,我自己没有使用过它,但有些功能是:

    • “SVG图形中所有命名形状的索引都很容易访问。”
    • “直接访问场景图树。您可以使用Java命令直接操作它。”

    谢谢您提供的信息。我更倾向于做与您正在做的相同的事情,只是从一个基本的SVG图开始并对其进行操作。我计划用id属性(id=“NODE23.STATUS\u INDICATOR”)标记元素,并与之匹配。我听到你在说XPath。一个图形可以有任意级别的任意元素嵌套。更新,我有一个原型正在工作,它看起来是一个可行的解决方案。我还没有用一个非常大的SVG DOM尝试过它,但我猜它可以处理它。