Hai...

   Thaks for the reply....

  I shall expalin to you clearly. I need to convert a Non-xml fiel to xml file. 
On the process of conversion as my saxEvents are generated I use an xslt to to 
the transformation and generate the xml output.
  
 I ahve attached a saple piece of code..please go thru it. I have an abstract 
(AbstractXMLReader) class which has an abstract parse(inputsource in)method. I 
extend this abstract class in my CSVParser which is used the parse the comma 
seperated non-xml file.As this class genetres the SAXEvents i use my 
transformer(SimpleCSVProcessor) class which has an xsl to do the 
transformations. The transformer transforms and genetares an XML file.

When I execute the program I dont get the output.  I have provided the code 
wirtten as an attachement. can you please let me know if there are any 
mistakes. My aim is to geneterate and XML {{{{ while reading the non-xml file 
and as SAX Events are generated I want the transformation to happen and produce 
an xml output. }}}} Plz revert back immediatel as possible as it is very urgent.


rgds,
satish
package parser;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;

public abstract class AbstractXMLReader implements org.xml.sax.XMLReader {
                private Map featureMap = new HashMap(  );
                private Map propertyMap = new HashMap(  );
                private EntityResolver entityResolver;
                private DTDHandler dtdHandler;
                protected ContentHandler ch;
                private ErrorHandler errorHandler;
                private String configuration;

                /**
                 * The only abstract method in this class. Derived classes
                 * can parse any source of data and emit SAX2 events to the
                 * ContentHandler.
                 */
                public abstract void parse(InputSource input)
                                        throws IOException,
                                SAXException;

                public boolean getFeature(String name)
                                throws SAXNotRecognizedException,
                                        SAXNotSupportedException {
                        Boolean featureValue = (Boolean) 
this.featureMap.get(name);
                        return (featureValue == null) ? false
                                        : featureValue.booleanValue(  );
                }

                public void setFeature(String name, boolean value)
                                throws SAXNotRecognizedException,
                                        SAXNotSupportedException {
                        this.featureMap.put(name, new Boolean(value));
                }

                public Object getProperty(String name)
                                throws SAXNotRecognizedException,
                                        SAXNotSupportedException {
                        return this.propertyMap.get(name);
                }

                public void setProperty(String name, Object value)
                                throws SAXNotRecognizedException,
                                        SAXNotSupportedException {
                        this.propertyMap.put(name, value);
                }

                public void setEntityResolver(EntityResolver entityResolver) {
                        this.entityResolver = entityResolver;
                }

                public EntityResolver getEntityResolver(  ) {
                        return this.entityResolver;
                }

                public void setDTDHandler(DTDHandler dtdHandler) {
                        this.dtdHandler = dtdHandler;
                }

                public DTDHandler getDTDHandler(  ) {
                        return this.dtdHandler;
                }

                public void setContentHandler(ContentHandler contentHandler) {
                        this.ch = contentHandler;
                }

                public ContentHandler getContentHandler(  ) {
                        return this.ch;
                }

                public void setErrorHandler(ErrorHandler errorHandler) {
                        this.errorHandler = errorHandler;
                }

                public ErrorHandler getErrorHandler(  ) {
                        return this.errorHandler;
                }

                public void setConfig(String config)
                {
                        this.configuration = config;
                }

                protected String getConfig()
                {
                        return this.configuration;
                }

                public void parse(String systemId) throws IOException,
                        SAXException {
                        parse(new InputSource(systemId));
                }
                                
        }


package parser;

import java.io.BufferedReader;
import java.io.Reader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;

public class AbstractParser extends AbstractXMLReader{
        
                private static final Attributes EMPTY_ATTR=new AttributesImpl();
                private static final String encoding = "UTF-8";
                        
                public void parse(InputSource in) throws SAXException, 
IOException {
                                ContentHandler ch=getContentHandler();
                                if (ch==null){
                                        System.out.println("Content Handler Not 
Registered");
                                        return;
                                }

                                BufferedReader br=null;
                                if(in.getCharacterStream()!=null){
                                        br=new 
BufferedReader(in.getCharacterStream());
                                }else if(in.getByteStream() != null){
                                        br=new BufferedReader(new 
InputStreamReader(in.getByteStream()));
                                }else if(in.getSystemId() !=null){
                                        URL url=new URL(in.getSystemId());
                                        br=new BufferedReader(new 
InputStreamReader(url.openStream()));
                                }else{
                                        throw new SAXException("Invalid 
InputSource ");
                                }
                
                                
                                
                                ch.startDocument(  );
                                System.out.println("start");
                                ch.startElement("","","csv",EMPTY_ATTR);
                                String curLine = null;
                                while ((curLine = br.readLine(  )) != null) {
                                curLine = curLine.trim(  );
                                        if (curLine.length(  ) > 0) {
                                                
ch.startElement("","","line",EMPTY_ATTR);
                                                parseLine(curLine, ch);
                                                ch.endElement("","","line");
                                        }
                                }
                                ch.endElement("","","csvFile");
                                ch.endDocument(  );
                                }
                 
                                private void parseLine(String curLine, 
ContentHandler ch)
                                        throws IOException, SAXException {

                                        String firstToken = null;
                                        String remainderOfLine = null;
                                        int commaIndex = 
locateFirstDelimiter(curLine);
                                        if (commaIndex > -1) {
                                            firstToken = curLine.substring(0, 
commaIndex).trim(  );
                                            remainderOfLine = 
curLine.substring(commaIndex+1).trim(  );
                                        } else {
                                                firstToken = curLine;
                                        }
                                                        
                                        firstToken = cleanupQuotes(firstToken);
                                        
ch.startElement("","","value",EMPTY_ATTR);
                                        ch.characters(firstToken.toCharArray(), 
0, firstToken.length(  ));
                                        ch.endElement("","","value");
                                 
                                         if (remainderOfLine != null) {
                                            parseLine(remainderOfLine, ch);
                                        }
                                    }
                                 
                                 private int locateFirstDelimiter(String 
curLine) {
                                        if (curLine.startsWith("\"")) {
                                            boolean inQuote = true;
                                            int numChars = curLine.length(  );
                                            for (int i=1; i<numChars; i++) {
                                                char curChar = 
curLine.charAt(i);
                                                if (curChar == '"') {
                                                    inQuote = !inQuote;
                                                } else if (curChar == ',' && 
!inQuote) {
                                                    return i;
                                                }
                                            }
                                            return -1;
                                        } else {
                                            return curLine.indexOf(',');
                                        }
                                    }
                                 
                                 private String cleanupQuotes(String token) {
                                        StringBuffer buf = new StringBuffer(  );
                                        int length = token.length(  );
                                        int curIndex = 0;
                                 
                                        if (token.startsWith("\"") && 
token.endsWith("\"")) {
                                            curIndex = 1;
                                            length--;
                                        }
                                 
                                        boolean oneQuoteFound = false;
                                        boolean twoQuotesFound = false;
                                 
                                        while (curIndex < length) {
                                            char curChar = 
token.charAt(curIndex);
                                            if (curChar == '"') {
                                                twoQuotesFound = 
(oneQuoteFound) ? true : false;
                                                oneQuoteFound = true;
                                            } else {
                                                oneQuoteFound = false;
                                                twoQuotesFound = false;
                                            }
                                 
                                            if (twoQuotesFound) {
                                                twoQuotesFound = false;
                                                oneQuoteFound = false;
                                                curIndex++;
                                                continue;
                                            }
                                 
                                            buf.append(curChar);
                                            curIndex++;
                                        }
                                 
                                        return buf.toString(  );
                                    }
                                                
                }
                
package parser;

import java.io.File;
import java.io.FileReader;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.xml.sax.InputSource;

public class SimpleCSVProcessor {
         
            public static void main(String[] args) throws Exception {
                if (args.length == 0) {
                    System.err.println("Usage: java "
                            + SimpleCSVProcessor.class.getName(  )
                            + " <csvFile> [xsltFile]");
                    System.err.println(" - csvFile is required");
                    System.err.println(" - xsltFile is optional");
                    System.exit(1);
                }
         
                String csvFileName = args[0];
                String xsltFileName = (args.length > 1) ? args[1] : null;
         
                TransformerFactory transFact = TransformerFactory.newInstance(  
);
                if (transFact.getFeature(SAXTransformerFactory.FEATURE)) {
                    SAXTransformerFactory saxTransFact =
                            (SAXTransformerFactory) transFact;
                    TransformerHandler transHand = null;
                    if (xsltFileName == null) {
                        transHand = saxTransFact.newTransformerHandler(  );
                    } else {
                        transHand = saxTransFact.newTransformerHandler(
                                new StreamSource(new File(xsltFileName)));
                    }
                    transHand.setResult(new StreamResult(System.out));
                    AbstractParser csvReader = new AbstractParser(  );
                    InputSource csvInputSrc = new InputSource(new 
FileReader(csvFileName));
                    csvReader.setContentHandler(transHand);
                    csvReader.parse(csvInputSrc);
                } else {
                    System.err.println("SAXTransformerFactory is not 
supported.");
                    System.exit(1);
                }
            }
        }

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

Reply via email to