Java text parsing

Hi all!
I'm a Java beginner and how I have to parse a text file of the form:
attribute1 1|2|443|554|56
attribute2 someString
attribute3 someOtherString
...and so on...
I have to change the value of one of the attributes.
Could you tell me how to overwrite this attribute.
Thanx,
Pesho

There are some very powerful String tools, which you might want to look at. The first is the Scanner Class http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html , which helps you to tokenize your Strings. It also helps you with regular expressions, which you should look up in the Java tutorial and here: http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-frame.html
A simpler version which is easier to handle is the StringTokenizer Class:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/StringTokenizer.html
About changing the file: you just can't change a few bits of your file. You have to read the whole file into some data structure, change the data structure and save it back to disk.

Similar Messages

  • Parse Exception : java.text.ParseException: Unparseable date

    I have inherited a UDF in some mapping that on the whole, works okay...
    but it throws an error after mapping a few dates:
    Parse Exception : java.text.ParseException: Unparseable date: "2010-03-18T00:00:00.000Z"
    Parse Exception : java.text.ParseException: Unparseable date: "2010-03-23T23:59:00.000Z"
    Parse Exception : java.text.ParseException: Unparseable date: "2010-03-18T00:00:00.000Z"
    Parse Exception : java.text.ParseException: Unparseable date: "2010-03-23T23:59:00.000Z"
    Parse Exception : java.text.ParseException: Unparseable date: "2010-03-18T00:00:00.000Z"
    Parse Exception : java.text.ParseException: Unparseable date: "2010-03-23T23:59:00.000Z"
    the first few map okay...  then i get the exception.
    the UDF is as follows:
    public String convertDateTimeToUTC(String strDate, Container container) throws StreamTransformationException{
    AbstractTrace trace = container.getTrace();
    Date date=null;
    SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    try{
    String dt = strDate;
    date = sdfSource.parse(dt);
    trace.addInfo("Local Date:"+date);
    SimpleDateFormat sdfDestination = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    strDate = sdfDestination.format(date);
    catch(ParseException pe){
    trace.addInfo("Parse Exception : " + pe);
    return strDate;
    can anyone see why this fails after successfully mapping a few fields???

    the first mapping works correctly...
    then we reuse the same fields to map to the additional segments.
    the context is correct as it is trying to pull the same fields in...  it just throw the error with the same data in the same UDF/Function Library but for different segments! :o(
    http://img199.imageshack.us/img199/3104/dateconversion.jpg
    as you can see from the screenshot above, the mapping works in the first instance, then fails on subsequent nodes.

  • Java.text.DecimalFormat is parsing '22.3.6' !

    I'm using DecimalFormat to mask a data entry field.
    When I enter something like 22.3.6, it parses!
    String docString = "22.3.6";
    NumberFormat nFormat = new DecimalFormat();
    float value = nFormat.parse(docString).floatValue();
    System.err.println("value: " + value);
    Gives me:
    value: 22.3
    I was expecting a NumberFormatException.
    I'm running
    build 1.5.0_05-b05
    Should I enter this as a bug?

    I tried yout code and it formats the String the way you wanted:
    public class Test
    public static void main ( String[] args )
    java.text.DecimalFormat df2 = new java.text.DecimalFormat("###########0.00");
    System.out.println(df2.format(java.lang.Float.parseFloat("-3.0")));
    } //End Main
    }

  • Text parsing and java

    I'd like to develop a java application that takes an .html plain text file and finds an html table within the file, and puts that table into a jtable (formatting it according to my preferences). I'm assuming a text parser would be my best bet. I can build my own text parser, but I'd like to avoid the work if there's an efficient parser in the API. Is there?

    These examples from [url http://javaalmanac.com/egs/javax.swing.text.html/pkg.html]Java Developers Almanac might help you out.

  • HOWTO improve java.text.SimpleDateFormat.parse() performace?!!

    I am using SimpleDateFormat to parse the dates. The dates I am parsing have the time zone in format "+0500". So I am using the "z" format to parse it.
    After doing some CPU profile tests, it turns out that I am spending 33% of my entire processing time in parsing the time zones!!! Which is obviously too much time. Is there a way to improve performance on the time zone parsing? I made sure that only one SimpleDateFormat object is created when my application is initialized and I only use the parse() method repeatedly - so that the initialization cost would remain minimum.
    Also are there any other implementations of java.text.DateFormat which will perform better?
    Any help greatly appreciated.
    Thanks,
    Yash

    Are you using "z" or "Z". Upper case is right one.

  • Java.text.ParseException :UnparseableDate

    Hi,
    Iam trying to convert a String into Date and that Date in to a customized Date format...,Here it is what iam doing..
    import java.util.*;
    import java.io.*;
    import java.text.*;
    public class str2date
    public static void main(String[] args)
    try
    String mystr="01-03-2003";
         SimpleDateFormat converttodt=new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
         java.util.Date mydt=converttodt.parse(mystr.trim());
         System.out.println("mydt"+mydt);
         String output=converttodt.format(mydt);
         System.out.println(output);
         catch(ParseException e)
         System.out.println(e.toString());
    Error:"java.text.ParseException :UnparseableDate 01-03-2003"
    Can any one help me out... URGENT...,
    Thanks in Advance
    Rao.

    Well, the problem is right in front of you. You're telling it the format of the date is going to be
    yyyy-MM-dd'T'hh:mm:ss
    and then you're giving it the date in a format of
    MM-dd-yyyy
    and wondering why it's not accepting it? If you want to input a date from one format and output it in another you need to create two SimpleDateFormat objects, one to parse the date from a String to a Date object, and a second (or reuse the first with a different parse string) to format the Date and output it as a String.

  • Java.text.ParseException: Unparseable date: "2008-12-16 00:00:00"

    Dear All WebLogic Guru,
    Need your help about the error in our WebLogic Apps Server. Below is the related logs. Hope to hear from you soon.
    ========
    Log snippet:
    ========
    [15:48:02 ] [INFO] [NumberFormatException in TimesheetAddHandler:] null [delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAddHandler.perform(TimesheetOperatorAddHandler.java:77)]
    java.text.ParseException: Unparseable date: "2008-12-16 00:00:00"
    at java.text.DateFormat.parse(DateFormat.java:337)
    at ejb.sessionBeans.gbms.bulkcrg.timesheet.TimesheetOperatorEJB.getOpsDttm(TimesheetOperatorEJB.java:1647)
    at ejb.sessionBeans.gbms.bulkcrg.timesheet.TimesheetOperator_vn72b_EOImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
    at ejb.sessionBeans.gbms.bulkcrg.timesheet.TimesheetOperator_vn72b_EOImpl.getOpsDttm(Unknown Source)
    at delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAddHandler.perform(TimesheetOperatorAddHandler.java:383)
    at delegate.RequestManager.perform(RequestManager.java:85)
    at delegate.FrontController.processRequest(FrontController.java:241)
    at delegate.FrontController.doPost(FrontController.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at sg.com.jp.framework.sso.SingleSignOnFilter.doFilter(SingleSignOnFilter.java:121)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at sg.com.jp.util.xss.XssFilter.doFilter(XssFilter.java:57)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:153)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    [15:48:02 ] [INFO] [ScreenManager] Screen ID [TimesheetOperatorViewSvlt] mapped to [JSP/gbms/bulkcrg/timesheet/TimesheetOP_details.jsp] [delegate.ScreenManager.nextScreen(ScreenManager.java:60)]
    [15:48:02 ] [INFO] Next Screen is : /JRPA(or ServletContext@27549577[app:47jrpa module:JRPA path:/JRPA spec-version:null],WebLogic Server 10.3.4.0 Fri Dec 17 20:47:33 PST 2010 1384255 Oracle WebLogic Server Module Dependencies 10.3 Thu Oct 28 06:03:12 PDT 2010 Oracle WebLogic Server on JRockit Virtual Edition Module Dependencies 10.3 Thu Sep 23 15:02:15 PDT 2010 )/JSP/gbms/bulkcrg/timesheet/TimesheetOP_details.jsp [delegate.FrontController.processRequest(FrontController.java:322)]
    [15:48:02 ] [DEBUG] 2nd funcName in doFilter = TimesheetOP_details [uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:83)]
    [15:48:02 ] [DEBUG] #########new admin framework ########## Function Code = [uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:92)]
    [15:48:02 ] [DEBUG] Function Code = [uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:108)]
    Status :S
    [15:48:03 ] [DEBUG] Contains Function: true TimesheetOperatorSuperAmend [tags.ACLTag.doAfterBody(ACLTag.java:132)]
    [15:48:03 ] [DEBUG] Contains Function: true TimesheetOperatorSuperDelete [tags.ACLTag.doAfterBody(ACLTag.java:132)]
    [15:48:03 ] [DEBUG] Contains Function: true TimesheetOperatorClose [tags.ACLTag.doAfterBody(ACLTag.java:132)]
    [15:48:31 ] [DEBUG] 2nd funcName in doFilter = TimesheetOperatorSuperAmend [uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:83)]
    [15:48:31 ] [DEBUG] Function Code = F27052 [uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:108)]
    [15:48:31 ] [DEBUG] Logged In?: true [delegate.helper.System.AuthenticationHandler.valid(AuthenticationHandler.java:571)]
    [15:48:31 ] [INFO] [RequestManager] Request ID [TimesheetOperatorSuperAmend] mapped to [delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler] [delegate.RequestManager.perform(RequestManager.java:77)]
    [15:48:31 ] [INFO] [RequestManager] delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler Created [delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler@66d4bf] [delegate.RequestManager.perform(RequestManager.java:82)]
    [15:48:31 ] [INFO] performing request delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler@66d4bf [delegate.RequestManager.perform(RequestManager.java:84)]
    [15:48:31 ] [INFO] [NumberFormatException in TimesheetAddHandler:] null [delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler.perform(TimesheetOperatorAmendHandler.java:96)]
    [15:48:31 ] [ERROR] java.lang.StringIndexOutOfBoundsException: String index out of range: 2
    at java.lang.String.substring(String.java:1934)
    at delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler.perform(TimesheetOperatorAmendHandler.java:110)
    at delegate.RequestManager.perform(RequestManager.java:85)
    at delegate.FrontController.processRequest(FrontController.java:241)
    at delegate.FrontController.doPost(FrontController.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at sg.com.jp.framework.sso.SingleSignOnFilter.doFilter(SingleSignOnFilter.java:121)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at sg.com.jp.util.xss.XssFilter.doFilter(XssFilter.java:57)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at uiServlet.jponlinecharge.TxnLogFilter.doFilter(TxnLogFilter.java:153)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    [delegate.helper.gbms.bulkcrg.timesheet.TimesheetOperatorAmendHandler.perform(TimesheetOperatorAmendHandler.java:526)]
    [15:48:31 ] [INFO] errorMessage ::: There are some error with your request. Please contact administrator if problem persists. [delegate.FrontController.processRequest(FrontController.java:311)]
    =================
    Application Server Specs:
    =================
    OS: Solaris10 x86
    cat /etc/release
    Oracle Solaris 10 9/10 s10x_u9wos_14a X86
    Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
    Assembled 11 August 2010
    RAM: 8GB
    HDD: 70GB
    Apps Server: WebLogic Server Version: 10.3.4.0
    Thank you and have a blessed day.
    Best regards,
    Albert

    Hi,
    Try this
    The reason for this error is that the time format entered is not correct. It should be a date and 24-hour format expressed as mm/dd/yy hh:mm:ss. For example: 07/15/10 14:30:00.
    The WebLogic Server 11g documentation gives instructions for Date/Time format. For details, please refer to
    http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e13952/pagehelp/Diagnosticsdiagnosticsviewmetricslogtabletitle.html
    Solution
    However, since you cannot open the Domain Log page again because the console hangs or reports a "Redirect Loop" error, you cannot modify this wrong time format on the console. To resolve this issue, please follow these steps:
    Stop WebLogic Server.
    Go to directory <Domain>/servers/<Server_Name>/data/console
    Either open ConsolePreferences.xml and modify the value of startrange (and/or endrange) to a correctly formatted time, e.g. 07/15/10 14:30:00
    OR
    Delete ConsolePreferences.xml entirely.
    Start Weblogic Server again.
    Regards,
    Kal

  • Please help! java.text.ParseException:

    Hi everybody
    why am i gatting java.text.ParseException: Unparseable date: "Jul 21, 2002"
    String s = "yyyy MM dd";
    SimpleDateFormat ff = new SimpleDateFormat(s);
    java.util.Date mm = ff.parse( DateFormat.getDateInstance().format(new java.util.Date())) ;
    System.out.println(mm.toString()); //Exception is thrown
    thanks in advence

    I didn't take time to look through your code too closely but here is some code that might help. The pullDate method reads a string from a JTextField (textField) and tries to return a Date. If it can't format it then it returns null. It tries to format the text based on the formats listed. If it can't format the text using one then it tries the next until it runs out of them. Change the formats to whatever you like. Good luck.
    Jeff
    private static DateFormatter[] altFormats = {
         new DateFormatter(new SimpleDateFormat("M/d/yy")),
         new DateFormatter(new SimpleDateFormat("MMddyy")),
         new DateFormatter(new SimpleDateFormat("MMM d, yy")),
         new DateFormatter(new SimpleDateFormat("MMM d yy")),
         new DateFormatter(new SimpleDateFormat("d MMM yy"))};
    private Date pullDate() {
         String text = textField.getText();
         Date d = null;
         int i = 0;
         while(d==null && i<altFormats.length) {
              try {
                   d = (Date)(altFormats[i++].stringToValue(text));
              } catch (ParseException e) {}                    
         return d;

  • Java.text.ParseException:Unparseable date

    Whilst using the DBMS_XMLSave.updateXML procedure I am having problems parsing a date which is the format dd/mm/yy
    I have tried to use the following procedure to set the date format :
    DBMS_XMLSave.setDateFormat(updCtx,'DD/MM/YY');
    Unfortunately it is not working, as the parser still does not recognise the date format, it seems to want the time element.
    please may somebody advise on some possible solutions

    The date formats must match java date formats not Oracle date formats. For a list of valid date formats please check http://java.sun.com/products/jdk/1.1/docs/api/java.text.SimpleDateFormat.html
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Satvir Ghag ([email protected]):
    Whilst using the DBMS_XMLSave.updateXML procedure I am having problems parsing a date which is the format dd/mm/yy
    I have tried to use the following procedure to set the date format :
    DBMS_XMLSave.setDateFormat(updCtx,'DD/MM/YY');
    Unfortunately it is not working, as the parser still does not recognise the date format, it seems to want the time element.
    please may somebody advise on some possible solutions<HR></BLOCKQUOTE>
    null

  • Java.text.SimpleDateFormat  with zones

    Hi,
    I have a log file which has a date format as below:
    20091224060656.000000+060
    Wondering if java.text.SimpleDateFormat would be able to parse it properly.I was seeing this API and it didnot have any exact syntax for parsing this kind of date format.
    Please let me know.
    Regards
    Sayan

    sayanb wrote:
    Hi,
    Thank you for the response.The problem is this is one our client's log file which we are trying to parse using the java.text.SimpleDateFormat from our own java application.
    Hence not sure about +060. I guess the part after the . represent the zone , please correct me.But +060 not sure what this means and I dont think java.text.SimpleDateFormat has a way to parse this.
    Please let me know your comments.Uhm, you need to "tell" SimpleDateFormat what the format is, if you don't know how to interpret the format, how are you going to be able to configure SimpleDateFormat. Contact your "client" and make sure you understand the format, then look at the API docs for SimpleDateFormat and hammer out a pattern string for that format. (But I would assume that the "part after the dot" is second fragments (smaller than milliseconds but larger than nanoseconds, about half-way between, what the name for that is, I'm not sure), and that the part with the "plus" is the timezone, probably +060 is the same as +0600.) IOW, you will probably have to "preprocess" the string removing the last three digits before the "plus" and adding a 0 to the end, but that is only a guess.

  • Java.text.SimpleDateFormat millisecond problem...

    When I run this code:
    java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat();
    formatter.applyLocalizedPattern("yyyy-MM-dd HH:mm:ss.000000");
    java.util.Date date1 = formatter.parse("2001-08-14 13:49:38.000000", new java.text.ParsePosition(0) );
    System.out.println("Date 1 = " + date1);
    formatter.applyLocalizedPattern("yyyy-MM-dd HH:mm:ss.SSS000");
    java.util.Date date2 = formatter.parse("2001-08-14 13:49:38.000000", new java.text.ParsePosition(0) );
    System.out.println("Date 2 = " + date2);
    The output is:
    Date 1 = Tue Aug 14 13:49:38 GMT+01:00 2001
    Date 2 = null
    The only difference is in the localized pattern, date 1 is generated where milliseconds aren't in the localized pattern, date 2 is generated where milliseconds are in the localized pattern.
    Why is date2 null????

    Hi! When you use the second pattern, it appears that "yyyy-MM-dd HH:mm:ss.SSS000" is not an acceptable pattern. However, "yyyy-MM-dd HH:mm:ss.SSS" works. I'd hazard a guess that when you specify milliseconds, only three places are allowed.
    If you used pattern #2 as you had specified originally, a java.text.ParseException is thrown. With the above modification, it works as expected.
    Hope this helps!
    Cheers!

  • Java XML Parser:Null Pointer exception in EntityReader

    I got NullPointer Exception when trying to parse a XML file which
    is pointed by a net URL, (say "http://www..."). The code causing
    problem is like:
    parser.parse(new URL("http://www.../demo.xml"));
    the exception I got is:
    java.lang.NullPointerException
    java.lang.NullPointerException
    at oracle.xml.parser.EntityReader.initXMLInput(Compiled
    Code)
    at
    oracle.xml.parser.EntityReader.<init>(EntityReader.java:64)
    at oracle.xml.parser.XMLParser.parse(XMLParser.java:245)
    at DemoXML.main(DemoXML.java:47)
    The very same code works fine with a simple local file URL and we
    also know that the URL exists in correct in XML format because we
    can open the URL with IE5.
    Another question - where can we get the source for the Java XML
    Parser.
    null

    This bug has already been reported and will be fixed in our next
    release.
    Oracle XML Team
    http://technet.oracle.com
    Oracle Technology Network
    Fiona Lu (guest) wrote:
    : I got NullPointer Exception when trying to parse a XML file
    which
    : is pointed by a net URL, (say "http://www..."). The code
    causing
    : problem is like:
    : parser.parse(new URL("http://www.../demo.xml"));
    : the exception I got is:
    : java.lang.NullPointerException
    : java.lang.NullPointerException
    : at oracle.xml.parser.EntityReader.initXMLInput
    (Compiled
    : Code)
    : at
    : oracle.xml.parser.EntityReader.<init>(EntityReader.java:64)
    : at oracle.xml.parser.XMLParser.parse
    (XMLParser.java:245)
    : at DemoXML.main(DemoXML.java:47)
    : The very same code works fine with a simple local file URL and
    we
    : also know that the URL exists in correct in XML format because
    we
    : can open the URL with IE5.
    : Another question - where can we get the source for the Java
    XML
    : Parser.
    null

  • Getting Error in java mapping: Parsing empty source. Root element expected!

    Hi Experts,
       I am using java mapping for schema validation of input message. I have followed all the standard procedures and implemented the java class in the interface mapping.
    My interface mapping is like this:
    OrderData --->Java Class ---SchemaValidate
                         Mesg Map ---OrderData_to_BAP --->BAPI Msg
    So first I want to validate the schema of the input message. If the input message is invalid then XI should throw an exception. Then I use the actual message mapping to map the input order data to the BAPI input parameters.
    In the java code I am using xerces parser.
    The java code works fine when I run it as a standalone application.
    The interface mapping also works fine if I don't include the java mapping. Ofcourse schema validation does not happen.
    But when I test the interface mapping by including the java mapping then I am getting the error:
    Call method execute of the application Java mapping SchemaValidate
    Java mapping SchemaValidate completed. (execute() of SchemaValidate
    com.sap.aii.utilxi.misc.api.BaseRuntimeException: Parsing an empty source. Root element expected!
    What am I doing wrong? Why it is not getting the root element?
    My Java code is as follows:
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.StreamTransformationException;
    import java.io.*;
    import java.util.Map;
    import javax.xml.parsers.*;
    import org.xml.sax.helpers.*;
    import org.xml.sax.*;
    import org.apache.xerces.jaxp.*;
    Sample mapper for SAP-XI
    @author Gopal
    public class SchemaValidate implements StreamTransformation {
        //Constants when using XML Schema for SAX parsing.
         static final String JAXP_SCHEMA_LANGUAGE =
         "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
         static final String W3C_XML_SCHEMA =
         "http://www.w3.org/2001/XMLSchema";
         static final String JAXP_SCHEMA_SOURCE =
         "http://java.sun.com/xml/jaxp/properties/schemaSource";
    Injection of mapping parameters
    from integration engine
    @param map Map with configuration data
        public void setParameter(Map map) {
    Mapping implementation
    @param inputStream Input data from integration engine
    @param outputStream Output data to integration engine
        public void execute(InputStream inputStream,
                            OutputStream outputStream)
          throws StreamTransformationException {
            try {
                  // obtain an object of class javax.xml.parsers.SAXParser,
                  SAXParserFactory spf = SAXParserFactoryImpl.newInstance();
                  spf.setNamespaceAware(true);
                  spf.setValidating(true);
                  SAXParser sp = spf.newSAXParser();
                  // setup the schema file
                  sp.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
                  sp.setProperty(JAXP_SCHEMA_SOURCE, new File("IOReqMsgSchema.xsd"));
                  //parse the input xml using the given schema
                  sp.parse(inputStream, new ParseErrorHandler());
            catch(SAXException se) {
              se.printStackTrace();
            catch ( Exception e ) {
              throw new StreamTransformationException( e.getMessage() );
    My input message is :
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:OrderCreate_request xmlns:ns0="mynamespace">
       <ORDER>HTEST1234567</ORDER>
       <ORDER_TYPE>z001</ORDER_TYPE>
       <ORDER_NAME>Test Order</ORDER_NAME>
       <CO_AREA>INTC</CO_AREA>
       <CCTR_POSTED>1234567890888888888</CCTR_POSTED>
       <CURRENCY>USD</CURRENCY>
       <PERSON_RESP>12345679</PERSON_RESP>
    </ns0:OrderCreate_request>
    Kindly help! please this is urgent!!!!!!
    Thanks
    Gopal
    Edited by: gopalkrishna baliga on Feb 28, 2008 9:34 AM

    Hi Stefan,
       I did the code changes to return output stream and the java code works perfectly in standalone mode in my PC.
       But when I use the same in the Java mapping with XI then It throws an error "Getting Error in java mapping: Parsing empty source. Root element expected!".
    My XI J2EE server has JDK1.4.3.11.
    Is there any limitation of using SAX parser in XI? If Yes, then which parser should be used for schema validation in XI?
    I have included the XSD file for schema validation along with class files in the .jar file. This jar file is then imported in XI repository. Is the XI engine not able to read the XSD file?
    Do I have to handle reading XSD file differently? Any suggession how?
    Is this parser error due to some security access?
    Kindly help me! I have been struggling with this problem since 2 weeks. I will be greatfull to you if you can help me.
    Thanks
    Gopal

  • Java.text.DecimalFormat Error

    I have this import directive in my jsp page.
    <%@ page import="java.io.*,java.sql.*;java.text.DecimalFormat" contentType="text/html;charset=windows-1252"%>
    I am using Jdeveloper 9i 9.0.3.
    When I compile this page from within JDeveloper I get this error for java.text.DecimalFormat
    Error: 'class' or 'interface' expected
    When I compile outside JDeveloper, I get NO error.
    Can somebody tell me what the problem is.

    <%@ page import="java.io.*;java.sql.*;java.text.DecimalFormat" contentType="text/html;charset=windows-1252"%>
    I think that missing semi-colon is what's creating problems for you.
    Sergio Bastos

  • URGENT: Entering Chinese into Java Text Area

    Hi,
    This might be an FAQ question but some of the info I've gotten over the web so far is conflicting.
    How do I allow a user to enter Chinese text into a Java Text Area (using an english keyboard)?
    All my users have:
    English Windows 2000 with a multilanguage pack. I cannot change this.
    But, I can specify any downloads (IMEs, etc.) and I can choose whichever version of Java I desire.
    Please let me know what is the simplist way to enable Chinese data entry in this environment. Let me know if I need to create my own input type :( or I can use MS Global IME) or if there are other third party chinese input types (even if they are not free).
    Thank you and have a nice day.
    Best Regards,
    Carlos

    Thanks for the note. The news was depressing - but things are much clearer now :) I would like one more clarification, though -
    On the MS site, I quote
    Any user who needs to input East Asian text across the language platforms of Windows Me, Windows 98, Windows 95, or Windows NT 4.0 could use Global IME.
    "Note: On Windows 2000, the Global IMEs work in any application since that OS has full-featured East Asian input support built in. On Windows Millennium, Windows 98, Windows 95, and Windows NT 4.0, the Global IMEs work only in supporting applications."
    When they say they say "full-featured East Asian input support built-in" does that exclude Java? If it would work, would it work with Swing or only AWT?
    Any thoughts? Thanks again for your not, I would greatly appreciate it if you could help me with this clarification.
    Best Regards,
    Carlos

Maybe you are looking for

  • Im trying to transfer music from one account to another and I dont know the password to that account

    Im trying to transfer music from accoiunt to another but I dont remember any of that info so when I try to change my password it takes me to the account I use now

  • Black out when screen is moved

    My screen blacks out at times when I move the screen tipping forward and back. There is only a few positions where it will stay on. It's a 2008 black macbook running 10.7.5 and 10.6.8  Everything else is fine. Hardware test shows no problems. Any ide

  • SSIS package causes Step 0, and removes the rest of steps

    Hi Guys, I have a Maintenance Plan to make backups of our databases locally. I then need to move the databases to our NAS (too much network traffic to have it write there directly). I have 7 steps after the creation to do various weekly/monthly check

  • Receiver agreement - IDOC

    hi all. i have a simple question. Why i must define a sender service at header mapping in receiver agreement?? if the sender service is not defined, i get the error, cannnot conver sender service to an ALE logical system. Rgds RP

  • How we can use table control

    Table control but without wizard. For instance for the table spfli, I want to design and use a table. The necessary steps for a good display and use are what? Thanks in advance.