当前位置: 首页 > 面试题库 >

无法在Java中使用蜡染来编辑SVG?

贺正祥
2023-03-14
问题内容

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

我已经使用Batik成功解析了SVG,但是打开它时看不到在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元素的值之一时

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

它已更改,但是当我在记事本中打开SVG时是相同的。

SVG

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

其他更新:解决了

File file = new File("new.svg");
FileWriter fWriter = new FileWriter(file);
XmlWriter.writeXml(svg, fWriter, false);
// Most crucial part, It wasn't working just because of flush
fWriter.close();

问题答案:

似乎您在这里没有使用任何特定的SVG功能,只是一些常规XML解析。解析文档的结果createDocument是内存中有一个DOM,但这不会自动将您的更改写出到文件中。您必须明确地做到这一点。
使用org.apache.batik.svggen.XmlWriter类是序列化之一。 您需要打开一个文件进行写入,并将FileWriter其与Document节点一起传递给该文件。



 类似资料:
  • 当使用Apache Batik从SVG转换为PNG时,我有时会出现奇怪的错误。例如,对于这个SVGhttps://www.macstories.net/app/themes/macstories4/images/logo-shape-bw.svg它会抛出一个异常,但对于这个https://upload.wikimedia.org/wikipedia/commons/0/02/SVG_logo.sv

  • 我是工作中使用POI的新手。现在我要用java中的POI来读取PPT中的条形图。我事先在其中添加了几个系列x,它们是条形图所属的excel的列标题。但我默认只能用POI读取前三列。另外,一旦我修改了条形图的列标题,或者想在只有三列的条形图中添加第四列(thar is, add a Color),当我打开PPT时,条形图无法编辑,表明条形图的节点损坏。那么有没有大师可以帮助谈论如何使用POI为条形图

  • 我正试图将editbook功能添加到我的java bookstore asignment中,但我无法让它工作。我很确定我很接近,只是逻辑不太正确 以下是我收到的一些错误代码: org.springframework.beans.factory.不满意依赖异常:创建名为bookstore Controller的bean时出错:通过字段存储库表示不满意的依赖关系; 原因:org。springframe

  • 了解如何使用 Lightroom(桌面版)中的编辑控件和预设。 您可以在细节视图中访问编辑控件。在编辑面板中,编辑控件排列在各种面板下,您可以展开/折叠这些面板以访问编辑控件:配置文件、亮度、颜色、效果、细节、光学和几何。为帮助您直观地了解上述每个编辑控件在照片中产生的效果,本文提供了相应的动画和视觉效果来说明这些概念。 注意:在移动设备上使用 Lightroom?请参阅在 Lightroom f

  • 我使用的数据表版本如下: 以及以下版本的编辑器、按钮和选择: 这是我的js文件,它调用我的API并读取数据和编辑器: var编辑器;//在示例中使用全局提交和返回数据渲染 } ); 这是我的HTML: 这是我的JSON文件(已缩短)

  • 我想使用java代码编辑以下首选项 Eclipse首选项通用工作区文本文件编码-Others-UTF-8 我需要有一个方法,调整4件事时,它被调用,所以我想调整上面的首选项使用java而不是manualyy...我怎么能这样做?