W3C home > Mailing lists > Public > www-svg@w3.org > June 2000

Re: More on: How to create a SVG File in Java.

From: Vincent Hardy <vincent.hardy@eng.sun.com>
Date: Mon, 05 Jun 2000 09:11:20 -0700
Message-ID: <393BD127.1DF617D3@eng.sun.com>
To: Bernd Grolig <Bernd.Grolig@ptv.de>
CC: www-svg@w3.org
Bernd,

In DOM 1.0, there is not 'standard' API to write out your DOM tree to 
an output stream. However, implementations typically provide some 
facility. For example, if you are using project X, the XmlDocument 
Document implementation contains several write methods, one of which
uses an OutputStream. So you could have:


XmlDocument doc = ...;

doc.appendChild(..);
..

// res is your HttpServletResponse
OuputStream os = res.getOuputStream();
doc.write(os);

...

I beleive Xerces has sample files that explain how to write to an
output stream.

I hope this helps.
Regards.
V.

Bernd Grolig wrote:
> 
> Hello,
> some days ago, I posted a question how to generate a SVG Stream using the
> SVG-DOM Implementation and Servlets.
> I got some good advice (thank you Vincent Hardy), but there is still a
> problem:
> 
> It works fine to use the Objectmodel, but I don't know how to parse the
> Object Model to the Outputstream.
> I could use the println Method of the Outputstream, but this is I guess not
> the idea of the Objectmodel (respectively I didn't even need to work with
> it).
> 
> Another possibility is, to export the content in an temporary svg file (as
> Vincent suggested), but I would prefer to parse the content directly in the
> outputstream.
> 
> If anybody has some ideas... would be great ;-)
> 
> Regards, Bernd.
> 
> Here is a simple example:
> 
> import org.w3c.dom.svg.*;
> import org.csiro.svg.dom.*;
> import java.io.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> 
> public class SVGServlet extends HttpServlet {
>         public void doGet (HttpServletRequest req, HttpServletResponse res)
>                 throws ServletException, IOException {
>                         try {
> 
>                                         res.setContentType("image/svg");
>                                         ServletOutputStream out =
> res.getOutputStream();
> 
>                                         // Some SVG Parameters
>                                         SVGNumber x = new SVGNumberImpl();
>                                         SVGNumber y = new SVGNumberImpl();
>                                         SVGNumber width = new
> SVGNumberImpl();
>                                         SVGNumber height = new
> SVGNumberImpl();
> 
>                                         x.setValue(10);
>                                         y.setValue(10);
>                                         width.setValue(10);
>                                         height.setValue(10);
> 
>                                         // Create an instance of a
> SVGDocument Class
>                                         SVGDocument doc =
> (SVGDocument)Class.forName("org.csiro.svg.dom.SVGDocumentImpl").newInstance(
> );
> 
>                                         // getRootElement
>                                         SVGSVGElement svg =
> (SVGSVGElementImpl)doc.getRootElement();
> 
>                                         // create a new Rect
>                                         SVGRect rect =
> (SVGRectImpl)svg.createSVGRect();
> 
>                                         // initialize the Rect
>                                         rect.setX(x);
>                                         rect.setY(y);
>                                         rect.setHeight(height);
>                                         rect.setWidth(width);
> 
>                                         // append the Node to the Document
>                                         doc.appendChild(svg);
> 
> /***************************************************************************
> ***
> 
> How can I parse the SVGDocument doc to the ServletOutputstream out?
> 
> /***************************************************************************
> ***
> 
>                                         out.println(//doc ??? does not work
> 
> 
> 
> 
>                         } catch (Exception e) {
>                                 e.printStackTrace();
>                         }
> }
> 
> 
> } // End SVGServlet Class
Received on Monday, 5 June 2000 12:11:05 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:18 GMT