Hello again,

I think I figured out how to go from the DOM in a string representaion back to a SVGDocument (See Below).

This seems to work. My question is if this is the most efficient way to do it, and also is the line doc = f.createDocument(null, sr) going to cause me trouble in the future, specificly is it ok to use null in the call to createDocument, or will this come back to bite me later on?

//Put the DOM into a string, see the method below.
String DOMString = svgToString();

public void myMethod(String DOMString){
       org.apache.batik.dom.svg.SAXSVGDocumentFactory f;
        org.w3c.dom.Document doc = null;
       java.io.StringReader sr;

try {
String parser = org.apache.batik.util.XMLResourceDescriptor.getXMLParserClassName();
f = new org.apache.batik.dom.svg.SAXSVGDocumentFactory(parser);
sr = new java.io.StringReader(this.writeSVGToString());
doc = f.createDocument(null, sr);
} catch (java.io.IOException ex) {
ex.printStackTrace();
}
SVGCanvas.setSVGDocument((SVGDocument)doc);
}


Thank you,
TJ

From: "TJ Teegan" <[EMAIL PROTECTED]>
Reply-To: "Batik Users" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: Re: Problems Serializing a SVGDocument
Date: Mon, 13 Dec 2004 09:32:50 -0600

Thank you for the quick response.

I have sort of found a work around. I just dump the DOM into a string like this:
public String svgToString(){
//Outputs the contents of the entire current DOM as a single string
StringWriter writer;
String svg;


       svg = null;
       try{
           writer = new StringWriter();
           DOMUtilities.writeDocument(SVGDoc, writer);
           writer.close();
           svg = writer.toString();

       }catch (IOException e){
           e.printStackTrace();
       }
       return svg;
   }

Now I have the entire DOM as a single string, which I can serialize. But I cannnot quite figure out how to get this string back into a Document, or SVGDocument, so I can display it on a jSVGCanvas.

I was looking around the website, but I could not find anything. Is this possible? If so, what should I be looking at to figure out how to do it?

Once again, any help is greatly appreciated.
Thank you,
TJ Teegan

From: Thomas DeWeese <[EMAIL PROTECTED]>
Reply-To: "Batik Users" <[EMAIL PROTECTED]>
To: Batik Users <[EMAIL PROTECTED]>
Subject: Re: Problems Serializing a SVGDocument
Date: Mon, 13 Dec 2004 10:20:02 -0500

Hi TJ,

TJ Teegan wrote:

I am trying to serialize a SVGDocument using the following code:

Our DOM is not serializable, I don't really know if there are really deep issues (I would expect there are) or not.

   You can usually serialize to XML of course.

public byte[] convertObjectToBytes(Object o){
       byte[] bytes;
       ObjectOutputStream oos;
       ByteArrayOutputStream byteStreamOut;

       //object o must implement the Serializable interface
       bytes = new byte[0];
       try{
           //write the object to a bit stream
           byteStreamOut = new ByteArrayOutputStream();
           oos = new ObjectOutputStream(byteStreamOut);
           oos.writeObject(o);
           bytes = byteStreamOut.toByteArray();
       }catch(IOException e){
           e.printStackTrace();
       }
       return bytes;
   }

I call the method like this:
byte[] b = convertObjectToBytes(svgCanvas.getSVGDocument()):

I get the following error:
java.io.NotSerializableException: org.apache.batik.css.engine.StyleMap
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)


at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at apt.onRequest.net.NetIO.convertObjectToBytes(NetIO.java:66)
at apt.onRequest.gui.DrawingPanel.testSave(DrawingPanel.java:2192)
at apt.onRequest.gui.DrawingPanel.zoomIn(DrawingPanel.java:282)
at apt.onRequest.gui.MainScreen.btnZoomInActionPerformed(MainScreen.java:471)
at apt.onRequest.gui.MainScreen.access$700(MainScreen.java:17)
at apt.onRequest.gui.MainScreen$8.actionPerformed(MainScreen.java:200)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)


at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)


at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)


at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)


Is there anyway around this error? I apologize if this already been covered. I searched the mailing list archives, but could not find an answer. Any help is greatly appreciated.

Thank you,
TJ Teegan

_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee� Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee� Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to