Hi Keith!
Yes, i've tried it.
Please see my first test application mentioned below ("CTestReader.java",
etc.).
The xml document "Cout.xml" does'nt specify encoding.
Regards
Michael
Hi Michael,
Have you tried Douglas Kvidera's suggestion:
http://castor.exolab.org/list-archive/msg19709.html
--Keith
[EMAIL PROTECTED] wrote:
>
> Hi!
>
> I'm still waiting for any kind of response about this...
>
> Keith & Everyone,
>
> Can you confirm my assumption about the possible reason of the problem.
> Or do you have another idea about this?
>
> Thanks...
>
> Hi Keith,
>
> i already tried with Xerces 1.3, 1.4 and 2.x.
> Unfortunately, it's always the same problem...
>
> I think that I've found the possible reason of and solution to my problem
by
> looking at the code for the unmarshal process. (see
"Unmarshaller.unmarshal"
> mentioned below) Castor still use the deprecated interfaces for SAX1
> ("Parser"
> and "DocumentHandler"). This interfaces has been replaced by the SAX2
> "XMLReader"
> interface and "ContentHandler" interface (since Xerces 1.3).
>
> Please see also the attached test application mentioned below. It works
> perfect on OS/390-USS.
>
> Michael
>
>
----------------------------------------------------------------------------
> -----------------
> /**
> * Unmarshals Objects of this Unmarshaller's Class type.
> * ...
> **/
> public Object unmarshal(InputSource source)
> throws MarshalException, ValidationException
> {
> Parser parser = Configuration.getParser();
>
> if (parser == null)
> throw new MarshalException("unable to create parser");
>
> if (entityResolver != null)
> parser.setEntityResolver(entityResolver);
>
> UnmarshalHandler handler = createHandler();
> parser.setDocumentHandler(handler);
> parser.setErrorHandler(handler);
>
> try {
> parser.parse(source);
> }
> catch(java.io.IOException ioe) {
> throw new MarshalException(ioe);
> }
> catch(org.xml.sax.SAXException sx) {
> Exception except = sx.getException();
> if (except == null) except = sx;
> MarshalException marshalEx = new MarshalException(except);
> if ( handler.getDocumentLocator() != null ) {
> FileLocation location = new FileLocation();
>
> location.setFilename(handler.getDocumentLocator().getSystemId());
>
> location.setLineNumber(handler.getDocumentLocator().getLineNumber());
>
> location.setColumnNumber(handler.getDocumentLocator().getColumnNumber());
> marshalEx.setLocation(location);
> }
> throw marshalEx;
> }
>
> return handler.getObject();
> } //-- unmarshal(InputSource)
>
>
----------------------------------------------------------------------------
> -----------------
>
> /**
> * Test application (using SAX2 "XMLReader" interface and "ContentHandler"
> interface)
> * ...
> **/
> package com.pass.test.xml;
>
> import java.io.IOException;
> import org.xml.sax.XMLReader;
> import org.xml.sax.Attributes;
> import org.xml.sax.SAXException;
> import org.xml.sax.helpers.DefaultHandler;
> import org.xml.sax.helpers.XMLReaderFactory;
> import org.apache.xerces.parsers.SAXParser;
>
> public class SAXTest extends DefaultHandler
> {
> public static void main(String[] argv)
> {
> if (argv.length != 1)
> {
> System.out.println("Usage: java SAXTest [URI]");
> System.exit(0);
> }
> String uri = argv[0];
> try
> {
> XMLReader parser =
> XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
> SAXTest SAXTestInstance = new SAXTest();
> parser.setContentHandler(SAXTestInstance);
> parser.parse(uri);
> }
> catch(IOException ioe)
> {
> ioe.printStackTrace();
> }
> catch(SAXException saxe)
> {
> saxe.printStackTrace();
> }
> }
> public void startElement(String uri, String localName, String qName,
> Attributes attributes) throws SAXException
> {
> System.out.println( "Start Element"+uri+" - "+localName );
> }
> }
>
----------------------------------------------------------------------------
> ----------------------------------
>
> -----Urspr�ngliche Nachricht-----
> Von: Keith Visco [mailto:[EMAIL PROTECTED]]
> Gesendet: Freitag, 13. September 2002 18:41
> An: [EMAIL PROTECTED]
> Betreff: Re: [castor-dev] Castor on OS/390-USS => "An invalid XML
> character (Unicode: 0x14)was found..."
>
> Michael,
>
> It looks like a Xerces issue, have you tried using the verion of Xerces
> that we bundle with Castor, version 1.4.0?
>
> Thanks,
>
> --Keith
>
> [EMAIL PROTECTED] wrote:
> >
> > Hi all,
> >
> > Currently i'm engaged in a project that involves Castor and OpenJMS. I
> have
> > few questions
> > regarding the processing of XML documents. So it would be great if
anybody
> > could help me.
> >
> > I'm using Castor and OpenJMS on IBM OS/390 with UNIX System Services
> active.
> >
> > W3C (and IBM, too) recommends that xml documents intended for use on
other
> > platforms
> > be encoded in Unicode (UTF-8 or UTF-16 or US ASCII). I did some tests
with
> > Unicode or ASCII
> > encoded XML documents on OS/390-USS, using only SAX or DOM (covered in
> > "xerces-J_1.3.1.jar").
> > Everything works fine...
> >
> > Also I wrote a little test application which use the castor processing
of
> > xml documents (please see the
> > attached java files "CTestReader.java" + "CBean.java", xml file
"Cout.xml"
> > and castor mapping file "Cmapping.xml").
> > Running this application on OS/390-USS, i get the following error: "An
> > invalid XML character (Unicode: 0x14) was found..."
> > (please see detailed error message mentioned below)
> >
> > I did a lot of tests, and lately it seems that the unmarshal process
does
> > not work properly on OS/390-USS.
> > The only way to process xml documents with castor is to convert the file
> to
> > EBCDIC. It's also necessary to
> > remove all linefeeds. Because, the xml specification does not define NEL
> > (New Line or Next Line) as
> > acceptable.
> >
> > A possible workaround is to convert all needed files in EBCDIC. However,
> > this is not really a good solution
> > because the truly portable encoding is Unicode...
> > By the way, OpenJms use Castor to load some xml configuration files
during
> > startup. Therefore the
> > current distribution of OpemJms does'nt work on OS/390-USS, too. I had
to
> > convert three xml files to
> > EBCDIC (without NEL). Now it works fine on OS/390. But it's still only a
> > workaround..!
> >
> > Do you have any ideas about the problem..?
> >
> > Many thanks in advance!
> >
> > Regards
> > Michael Heilmann
> >
> >
>
/**************************************************************************
> > /** CTestReader.java
> >
>
/**************************************************************************
> > import java.io.*;
> > import org.exolab.castor.mapping.*;
> > import org.exolab.castor.xml.*;
> >
> > public class CTestReader
> > {
> > public static void main(String[] argv)
> > {
> > try
> > {
> > Mapping map = new Mapping();
> > map.loadMapping("Cmapping.xml");
> > File file = new File("Cout.xml");
> >
> > // now restore the value and list what we get
> > Reader reader = new FileReader(file);
> > Unmarshaller unmarshaller = new Unmarshaller(map);
> > CBean read = (CBean)unmarshaller.unmarshal (reader);
> >
> > System.out.println(read.getCarrier());
> > System.out.println(read.getNumber());
> > }
> > catch (IOException ex)
> > {
> > ex.printStackTrace(System.err);
> > }
> > catch (MarshalException ex)
> > {
> > ex.printStackTrace(System.err);
> > }
> > catch (ValidationException ex)
> > {
> > ex.printStackTrace(System.err);
> > }
> > catch (MappingException ex)
> > {
> > ex.printStackTrace(System.err);
> > }
> > }
> > }
> >
> >
>
/**************************************************************************
> > /** CBean.java
> >
>
/**************************************************************************
> > public class CBean
> > {
> > private String m_carrier;
> > private int m_number;
> >
> > public CBean() {}
> > public void setCarrier(String carrier) {
> > m_carrier = carrier;
> > }
> > public String getCarrier() {
> > return m_carrier;
> > }
> > public void setNumber(int number) {
> > m_number = number;
> > }
> > public int getNumber() {
> > return m_number;
> > }
> > }
> >
> >
>
/**************************************************************************
> > /** Cout.xml
> >
>
/**************************************************************************
> > <?xml version="1.0" ?>
> > <flight>
> > <carrier>AR</carrier>
> > <number>426</number>
> > </flight>
> >
> >
>
/**************************************************************************
> > /** Cmapping.xml
> >
>
/**************************************************************************
> > <!DOCTYPE databases PUBLIC
> > "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
> > "http://castor.exolab.org/mapping.dtd">
> > <mapping>
> > <description>Basic mapping example</description>
> > <class name="CBean" auto-complete="true">
> > <map-to xml="flight"/>
> > <field name="carrier">
> > <bind-xml name="carrier" node="element"/>
> > </field>
> > <field name="number">
> > <bind-xml name="number" node="element"/>
> > </field>
> > </class>
> > </mapping>
> >
> > +++++++++++++++++++++++++++++++++++++++++++++++++
> > ++++ detailed error message
> > +++++++++++++++++++++++++++++++++++++++++++++++++
> > CEE5206S The signal SIGINT was received.
> >
> > XACGPEP@ALAO:/xuser/xacgpep/pass/ctest$ java -cp
> > castor-0.9.3.19.jar.jar:xerces-J_1.3.1.jar:. CTestReader
> > org.xml.sax.SAXException: Parsing Error : An invalid XML character
> (Unicode:
> > 0x14) was found in the prolog of the document.
> > Line : 1
> > Column : 2
> >
> > at org.exolab.castor.xml.UnmarshalHandler.fatalError(Unknown
> Source)
> > at
> > org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1096)
> > at
> >
>
org.apache.xerces.framework.XMLDocumentScanner.reportFatalXMLError(XMLDocume
> > ntScanner.java:644)
> > at
> >
>
org.apache.xerces.framework.XMLDocumentScanner$XMLDeclDispatcher.dispatch(XM
> > LDocumentScanner.java:799)
> > at
> >
>
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.
> > java(Compiled Code))
> > at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:952)
> > at org.exolab.castor.xml.Unmarshaller.unmarshal(Unknown Source)
> > at org.exolab.castor.xml.Unmarshaller.unmarshal(Unknown Source)
> > at CTestReader.main(CTestReader.java:29)
> >
> > Diese E-Mail enth�lt vertrauliche und/oder rechtlich gesch�tzte
> > Informationen. Wenn Sie nicht der richtige Adressat sind oder diese
E-Mail
> > irrt�mlich erhalten haben, informieren Sie bitte sofort den Absender und
> > vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
> > Weitergabe dieser Mail ist nicht gestattet.
> >
> > This e-mail may contain confidential and/or privileged information. If
you
> > are not the intended recipient (or have received this e-mail in error)
> > please notify the sender immediately and destroy this e-mail. Any
> > unauthorized copying, disclosure or distribution of the material in this
> > e-mail is strictly forbidden.
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> > unsubscribe castor-dev
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
>
> Diese E-Mail enth�lt vertrauliche und/oder rechtlich gesch�tzte
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
> irrt�mlich erhalten haben, informieren Sie bitte sofort den Absender und
> vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
> Weitergabe dieser Mail ist nicht gestattet.
>
> This e-mail may contain confidential and/or privileged information. If you
> are not the intended recipient (or have received this e-mail in error)
> please notify the sender immediately and destroy this e-mail. Any
> unauthorized copying, disclosure or distribution of the material in this
> e-mail is strictly forbidden.
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev
Diese E-Mail enth�lt vertrauliche und/oder rechtlich gesch�tzte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
irrt�mlich erhalten haben, informieren Sie bitte sofort den Absender und
vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
Weitergabe dieser Mail ist nicht gestattet.
This e-mail may contain confidential and/or privileged information. If you
are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev