2017-01-23 27 views
0

私は、Javaで編集したい名前、ID、その他のフィールドを持つ学生カードSVGを持っています。ユーザーがGUIを使用して入力します。JavaでBatikを使用してSVGを編集できませんか?

私はBatikを使ってSVGを正常に解析しましたが、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(); 
} 

私は

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

を使用してSVG要素の値の1プリントアウトした場合それは変わっていますが、私はメモ帳でSVGを開くとそれは同じです。

SVG

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

OTHERS FOR UPDATE:あなたは、ここだけでいくつかの一般的なXML解析を任意の特定のSVG機能を使用していないように見えます

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(); 

答えて

1

で解決しました。 createDocumentでドキュメントを解析した結果は、メモリ上のDOMですが、変更内容をファイルに自動的に書き出すわけではありません。それを明示的に行う必要があります。 Using the org.apache.batik.svggen.XmlWriter class is one of serializing.書き込みのためにファイルを開き、DocumentノードとともにFileWriterを渡す必要があります。

+0

FileOutputWriter? –

+0

申し訳ありませんが、FileWriter。 (私はJavaをやってからしばらくしています) – heycam

+1

あなたのアップデート#2は私にとって正しいものです。まだ問題がある場合は、バティックユーザーのメーリングリストにお尋ねください。 – heycam

関連する問題