SvgTidy/SOMDump
< SvgTidy
SOMDump
import org.w3c.dom.Document; import org.w3c.dom.Element; import org.apache.batik.bridge.BaseScriptingEnvironment; import org.apache.batik.bridge.BridgeContext; import org.apache.batik.bridge.GVTBuilder; import org.apache.batik.bridge.UserAgentAdapter; import org.apache.batik.dom.svg.SAXSVGDocumentFactory; import org.apache.batik.util.XMLResourceDescriptor; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.DOMSerializer; import org.apache.xerces.dom3.bootstrap.DOMImplementationRegistry; /** * @author Björn Höhrmann * */ public class SOMDump { void run(String[] args) throws Exception { String parser = XMLResourceDescriptor.getXMLParserClassName(); SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser); String uri = args[0]; Document doc = f.createDocument(uri); UserAgentAdapter userAgent = new UserAgentAdapter(); GVTBuilder builder = new GVTBuilder(); BridgeContext ctx = new BridgeContext(userAgent); ctx.setDynamic(true); builder.build(ctx, doc); BaseScriptingEnvironment scriptEnvironment = new BaseScriptingEnvironment(ctx); Element script = null; if (args.length == 2) { script = doc.createElementNS("http://www.w3.org/2000/svg", "script"); script.setAttributeNS("http://www.w3.org/1999/xlink", "href", args[1]); script.setAttributeNS(null, "type", "text/ecmascript"); doc.getDocumentElement().appendChild(script); } scriptEnvironment.loadScripts(); scriptEnvironment.dispatchSVGLoadEvent(); if (script != null) script.getParentNode().removeChild(script); System.setProperty(DOMImplementationRegistry.PROPERTY, "org.apache.xerces.dom.DOMImplementationSourceImpl"); DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); DOMImplementationLS impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); DOMSerializer writer = impl.createDOMSerializer(); System.out.println(writer.writeToString(doc)/*.substring(0,2048)*/); } public static void main(String[] args) throws Exception { if (args.length < 1) { System.err.println("Usage: foo bar.svg [ baz.es ]"); return; } (new SOMDump()).run(args); } }