无法在Java中使用Batik编辑SVG?

时间:2017-01-23 06:17:42

标签: java xml svg batik

我有一个学生卡SVG,它具有我想通过Java编辑的名称,ID和其他字段,因为用户使用GUI输入它们。

我已经使用Batik成功解析了SVG,但是当我打开它时,我无法看到我在SVG文件中所做的更改。

wdt:P31/wdt:P279*

当我使用

打印出一个SVG元素的值时

String parser = XMLResourceDescriptor.getXMLParserClassName(); SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser); String uri = "card.svg"; try { Document doc = f.createDocument(uri); NodeList nodeList = doc.getChildNodes(); Element svg = doc.getElementById("name"); svg.setTextContent("Your Name"); System.out.println(svg.getTextContent()); } catch (IOException e) { e.printStackTrace(); }

它发生了变化但是当我在记事本中打开SVG时它也是一样的。

SVG

System.out.println(svg.getTextContent());

更新其他人:解决

<text x="759" y="361" id="name" class="fil3 fnt3">STUDENT</text>

1 个答案:

答案 0 :(得分:1)

看起来你没有在这里使用任何特定的SVG功能,只是一些通用的XML解析。使用createDocument解析文档的结果是内存中的DOM,但不会自动将更改写入文件。你必须明确地这样做。 Using the org.apache.batik.svggen.XmlWriter class is one of serializing.您需要打开一个文件进行编写,并将FileWriterDocument节点一起传递给它。