On Tue, 26 Nov 2002, Stefan Lischke wrote: >> I have converted my binary data(image) into Base64 encoding as required by >> Xindice. Do I now simply cut and paste this Base64 representation into my >> image element in the XML document and then copy the whole XML >> document into >> a collection in Xindice? How best do I extract and then decode this image >> element when its stored in the database? > >i thought about this too, but i decided not to use xindice to store non xml >data. But maybe my decision was wrong has anybody any experience with non >xml data and xindice
Almost a year ago I tried to store data which I'm not aware of whether they're String or not into Xindice. The question is: How should Xindice handle Blobs (if it should be able to handel them anyway)? My solution was using CDATA. This still remains some risk if the stored data contains ']]'. So BASE64 Encoding looks good to me as well. Infact you don't need the CDATA, since '<' or '>' is not part of the BASE64 Alphabet. But you need the time of processing the encoder and the decoder. Now I paste some java code from my Xindice proxy: // some global defines private final String BEGCON_TOKEN = "<content><![CDATA["; private final String ENDCON_TOKEN = "]]></content>"; private final String XML_PI_TOKEN = "<?xml version=\"1.0\"?>"; // storing document into database // content holds my binary data byte[] conten; [..] String data = "BEGCON_TOKEN" + new String(.content) + "ENDCON_TOKEN"; XMLResource resource = (XMLResource) col.createResource(id, "XMLResource"); resource.setContent(data); col.storeResource(resource); // retreiving document from database using id [..] XMLResource resource = (XMLResource) col.getResource(id); String con = (String)resource.getContent(); // content holds the raw data byte[] content = con.substring( XML_PI_TOKEN.length() + 1 + BEGCON_TOKEN.length(), con.length() - ENDCON_TOKEN.length() ).getBytes(); // convert content to whatever it's supposed to be, images, wav files, // Strings, XMLBinding, whatever.... So, I hope this helps a bit. I would drop the CDATA now and work with content as BASE64 encoded String. kind regards Heinrich -- http://www.xmlBlaster.org
