Hi Tim,
You do create your own reader and do all the configuration as you have
done below and then you can do the following:
UnmarshalHandler handler = myUnmarshaller.createHandler();
This will return a DocumentHandler which can then be passed to the
parser/reader:
parser.setDocumentHandler(handler);
If you need to use a ContentHandler instead of a DocumentHandler you can
do:
reader.setContentHandler(myUnmarshaller.getContentHandler(handler));
Then once you finish you parsing...
reader.parse(inputSource);
...
You can get the object that was unmarshalled by the following:
Object myObject = handler.getObject();
Hope that helps,
--Keith
"Bardzil, Timothy J (Timothy)" wrote:
>
> Keith,
>
> Hmm... So this will tell the SAX parser to use validation but I need some way to
> tell the parser where the schema lives. All I have in my XML document is a
> namespace. This is how I currently do it using a XMLReader.
>
> XMLReader reader = XMLReaderFactory.createXMLReader();
> reader.setFeature("http://xml.org/sax/features/validation", true);
> reader.setFeature("http://apache.org/xml/features/validation/schema", true);
> reader.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
> "http://avaya.com/namespace"
> +
> getClass().getClassLoader().getResource("name-of-schema-file.xsd").toString());'
>
> It appears the features can be configured via the castor.properties file. In fact
> it looks like the first validation feature is added by default.
>
> However, the setting of the property is the problem. This mapping of a namespace
> URI to a schema location URI needs to happen at runtime. So I can't specify this in
> a properties file. What I really need is a what to get a handle to the SAXParser /
> XMLReader instance that will be used by the unmarshaller.
>
> Something like:
>
> SAXParser parser = unmarshaller.getParser();
> XMLReader reader = parser.getXMLReader();
> reader.setProperty(...); // same as above
>
> then call
>
> Object obj = unmarshaller.unmarshal(...)
>
> Please let me know if I'm way off here but I can't figure out any other way to do it.
>
> Thanks,
> Tim
>
> -----Original Message-----
> From: Keith Visco [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, June 24, 2003 12:52 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] Unmarshalling - XML schema validation
>
> Hi Tim,
>
> It should work properly. Try setting the parser validation property in
> the castor.properties file.
>
> --Keith
>
> "Bardzil, Timothy J (Timothy)" wrote:
> >
> > I am attempting to unmarshall and XML document that is defined by an XML schema.
> > I have chosen to use a mapping file rather than code generated directly from the
> > schema for a number of reasons that I won't get into. However, I would like to
> > use the schema for validation purposes when unmarshalling the document into
> > objects. Is this possible?
> >
> > I can currently do this with a regular SAX parser by setting the
> > http://apache.org/xml/properties/schema/external-schemaLocation property on the
> > underlying XMLReader. I believe that Castor uses SAX so would something similar
> > work?
> >
> > Thanks,
> > Tim Bardzil
> >
> > -----------------------------------------------------------
> > 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
>
> -----------------------------------------------------------
> 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