Java/Batik,在Java中修改属性,更新SVG DOM

Java/Batik,在Java中修改属性,更新SVG DOM,java,dom,svg,batik,Java,Dom,Svg,Batik,我用几个符号重新描述了一个SVG文档。在Java应用程序中,我修改了DOM中的一个属性,使用setAttributeNS更改了stop color属性 我可以看到该属性被修改并更改为新值,但是SVG文档呈现并没有反映更改 如果我在使用JavaScript的浏览器中执行相同操作,DOM将更新,并且更改是可见的。我需要做什么才能使蜡染渲染反映DOM中的更改 编辑:除了能够在Java中修改属性并查看更新之外。我见过其他行为,它们在浏览器中使用相同的SVG文件,但在Java应用程序中不起作用。例如,使用

我用几个符号重新描述了一个SVG文档。在Java应用程序中,我修改了DOM中的一个属性,使用setAttributeNS更改了stop color属性

我可以看到该属性被修改并更改为新值,但是SVG文档呈现并没有反映更改

如果我在使用JavaScript的浏览器中执行相同操作,DOM将更新,并且更改是可见的。我需要做什么才能使蜡染渲染反映DOM中的更改

编辑:除了能够在Java中修改属性并查看更新之外。我见过其他行为,它们在浏览器中使用相同的SVG文件,但在Java应用程序中不起作用。例如,使用带有DOM调试器的浏览器,我可以修改lineargradient的“停止颜色”属性,并在浏览器中查看更改,但是在Batik应用程序中使用脚本或Java这不起作用,看不到任何更改


Edit2:我发现,如果我使用lineargradient更改元素的fill属性,然后修改linergradient的stop color属性,然后将fill属性更改回其工作的lineargradient,但如果我不修改fill属性,则不会这样做。此行为仅在蜡染中出现。

是否将文档标记为动态?是的,在创建画布后立即标记:mcanvas=new JSVGCanvas();mcanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);