Hi Dao,

Here are a couple of load routines I use frequently ..  Hope they help you
narrow your problem.

Load from a file on the classpath (templated)

        InputStream templateStream =
Canvas.class.getResourceAsStream("template.svg");
        String parser = XMLResourceDescriptor.getXMLParserClassName();
        SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
        SVGDocument doc = null;

        try {
            doc = f.createSVGDocument(null, templateStream);
        } catch (IOException ex) {
        }

       myCanvas.setSVGDocument(doc);


Load from a byte array version:

                Element a = null;
                ByteArrayInputStream bais = new
ByteArrayInputStream(myByteArray);
                String parser =
XMLResourceDescriptor.getXMLParserClassName();
                SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);

                try {
                    a = f.createDocument(null, bais).getDocumentElement();
                } catch (IOException ex) {
                }

                a = (Element) document.importNode(a, true);




On Wed, Dec 30, 2009 at 12:47 PM, dao <[email protected]> wrote:

> hello, I am stucked in the process of creating a JSVGCanvas from a SVG XML
> content coming from an input stream.
>
> What is the best practice?
>
> Here is the way I do that:
>
>  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>
> DocumentBuilder builder = factory.newDocumentBuilder();
>
> String xmlDocument = remoteEngine.getSvgDocument();
>
> System.out.println(xmlDocument);
>
> InputStream inStream = new ByteArrayInputStream(xmlDocument.getBytes());
>
> return builder.parse(inStream);
>
>
> I get into a ClassCastEexception when batik tries to narrow the document to
> a SVG document (I suppose so...)
>
> --
> Dao Hodac
>

Reply via email to