Re: [Dev] CSV - XML transformation using XSLT mediator
Hi Lasindu, Could you please let us know a sample input format and desired output format Thanks Senduran On Mon, Dec 1, 2014 at 2:11 PM, Lasindu Charith lasi...@wso2.com wrote: Hi all, Does anybody know a way(sample) to transform CSV format to XML in ESB, using some mediator except Smooks? (such as XSLT) Thanks, Lasindu -- *Lasindu Charith* Software Engineer, WSO2 Inc. Mobile: +94714427192 Web: blog.lasindu.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Senduran * Software Engineer, WSO2, Inc.; http://wso2.com/ http://wso2.com/ Mobile: +94 77 952 6548 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] CSV - XML transformation using XSLT mediator
Hi Senduran, It should be comma separated csv to XML format. *FROM: CSV* abc, 123, 0.1, xyz, pqr, 456, 0.01, qwe, zxy, 789, 0.45, lmn *TO: XML* root element val1abc/val1 val2123/val2 val30.1/val3 val4xyz/val4 element element val1pqr/val1 val2456/val2 val30.01/val3 val4qwe/val4 element element val1zxy/val1 val2789/val2 val30.45/val3 val4lmn/val4 element root On Mon, Dec 1, 2014 at 6:20 PM, Senduran Balasubramaniyam sendu...@wso2.com wrote: Hi Lasindu, Could you please let us know a sample input format and desired output format Thanks Senduran On Mon, Dec 1, 2014 at 2:11 PM, Lasindu Charith lasi...@wso2.com wrote: Hi all, Does anybody know a way(sample) to transform CSV format to XML in ESB, using some mediator except Smooks? (such as XSLT) Thanks, Lasindu -- *Lasindu Charith* Software Engineer, WSO2 Inc. Mobile: +94714427192 Web: blog.lasindu.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Senduran * Software Engineer, WSO2, Inc.; http://wso2.com/ http://wso2.com/ Mobile: +94 77 952 6548 -- *Lasindu Charith* Software Engineer, WSO2 Inc. Mobile: +94714427192 Web: blog.lasindu.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] CSV - XML transformation using XSLT mediator
Hi Lasindu, I wrote a sample that does what you expect. Please check the attached. import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { ListString headers = new ArrayListString(); File file = new File(/home/tharindu/Desktop/lasindu/abc.csv); BufferedReader reader = null; try { DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder domBuilder = domFactory.newDocumentBuilder(); Document newDoc = domBuilder.newDocument(); // Root element Element rootElement = newDoc.createElement(root); newDoc.appendChild(rootElement); reader = new BufferedReader(new FileReader(file)); int line = 0; String text = null; headers.add(val1); headers.add(val2); headers.add((val3)); headers.add(val4); while ((text = reader.readLine()) != null) { StringTokenizer st = new StringTokenizer(text, ,, false); String[] rowValues = new String[st.countTokens()]; int index = 0; while (st.hasMoreTokens()) { String next = st.nextToken(); rowValues[index++] = next.trim(); } //String[] rowValues = text.split(,); Element rowElement = newDoc.createElement(element); rootElement.appendChild(rowElement); for (int col = 0; col headers.size(); col++) { String header = headers.get(col); String value = null; if (col rowValues.length) { value = rowValues[col]; } else { // ?? Default value value = ; } Element curElement = newDoc.createElement(header); curElement.appendChild(newDoc.createTextNode(value)); rowElement.appendChild(curElement); } line++; } ByteArrayOutputStream baos = null; OutputStreamWriter osw = null; try { baos = new ByteArrayOutputStream(); osw = new OutputStreamWriter(baos); TransformerFactory tranFactory = TransformerFactory.newInstance(); Transformer aTransformer = tranFactory.newTransformer(); aTransformer.setOutputProperty(OutputKeys.INDENT, yes); aTransformer.setOutputProperty(OutputKeys.METHOD, xml); aTransformer.setOutputProperty({http://xml.apache.org/xslt}indent-amount;, 4); Source src = new DOMSource(newDoc); Result result = new StreamResult(osw); aTransformer.transform(src, result); osw.flush(); System.out.println(new String(baos.toByteArray())); } catch (Exception exp) { exp.printStackTrace(); } finally { try { osw.close(); } catch (Exception e) { } try { baos.close(); } catch (Exception e) { } } } catch (Exception e) { e.printStackTrace(); } } } ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev