我有一个学生卡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>
答案 0 :(得分:1)
看起来你没有在这里使用任何特定的SVG功能,只是一些通用的XML解析。使用createDocument
解析文档的结果是内存中的DOM,但不会自动将更改写入文件。你必须明确地这样做。 Using the org.apache.batik.svggen.XmlWriter
class is one of serializing.您需要打开一个文件进行编写,并将FileWriter
与Document
节点一起传递给它。