我有一个Java Batik程序,它修改一个Document并在JSVGCanvas中呈现修改。通过更改Node项的颜色来进行修改。 第一次渲染发生,svgCanvas.setDocument(svgDoc)显示更改。 后续渲染不显示在SVGCanvas中。 然而,GVTTreeRendererAdapter()告诉渲染开始然后每次完成。 我检查了SVG文档,每次都进行修改。
private String modifySVG(String fromString, String toString) {
NodeList nList = svgDoc.getElementsByTagName("defs");
String defs;
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
eElement = (Element) nNode;
defs = eElement.getElementsByTagName("style").item(0).getTextContent();
defs = defs.replace(fromString, toString);
eElement.getElementsByTagName("style").item(0).setTextContent(defs);
}
}
svgCanvas.setDocument(svgDoc);
return defs;
}