I'll look into the XML code generator. I didn't know what that was and didn't see that it existed, and that may very well do what I want it to do.
On Wed, Jul 16, 2008 at 12:15 PM, Werner Guttmann <[EMAIL PROTECTED]> wrote: > Geoffrey, > > Geoffrey Fairchild wrote: > > Hm, maybe I'm misunderstanding the purpose of the mapping file. I simply > > want to map from an XML file containing data into a Java object > > representation of that data. The Castor mapping XML file seems like the > > most logical way to do this without having to write a Java XML parser. > Yes, it is most commonly used way of XML data binding when you only have > Java classes, but no XML schema. > > The > > XSD merely provides requirements on how the XML file should be formed. > SUre. But with Castor XML, when you have an XML schema, there's a second > option to about XML data binding, i.e. mapping between XML and Java: the > XML code generator. You basically use the code generator to create Java > classes from an XML schema that automatically correspond to the XML > schema defined. In addition to these domain classes, the code generator > will generate a second set of Java classes, i.e. the descriptor classes. > More further down. > > > I simply followed the guide at > > http://www.castor.org/how-to-enable-xml-validation.html to get my XML > file > > validated against the XSD, but I'm having the issues I previously > mentioned. > Okay, addressing just this question, have you seen my inline comment re: > the invalid use of the 'schemaLoaction' attribute in the mapping file ? > > > What are you talking about when you mention "internal descriptor > classes"? > As explained above, when using the code generator to generate Java > classes from an XML schema, the code generator will generate a second > set of classes which we call 'descriptor classes'. There descriptor > classes define the XML data binding between the Java classes generated > and the XML contract defined in the XML schema. In other words, there is > no need to define a mapping file any more. > > Actually, when you use a mapping file, on startup Castor XML converts > the mapping definitions to (internally use) descriptors. > > > I looked over your website, and it primarily talks about the mapping > file, > > so I'm a little confused. I don't see any mention of "internal > descriptor > > classes." > No, true. But in the left sided menu bar, you'll find a section 'XML > code generator', incl. documentation about integration with build tools > such as Ant, Maven, the binding file, etc. > > > > > Thanks for your help. > > > > Geoff > > > > On Wed, Jul 16, 2008 at 4:40 AM, Werner Guttmann < > [EMAIL PROTECTED]> > > wrote: > > > >> Geoffrey, > >> > >> why do you want to be using a mapping file to map your Java classes to > >> XML when you have an XML schema available and as such could be in a > >> position where you generate Java classes (and internal descriptor > >> classes) from the XML schema, and as such avoid having to write a > >> mapping file. > >> > >> Geoffrey Fairchild wrote: > >>> First of all, if you have a Something Awful account, you can read a > more > >>> formatted version of this here: > >>> http://forums.somethingawful.com/showthread.php?threadid=2902508 > >>> > >>> > >>> > >>> I'll go ahead and rewrite this if you don't have an account. > >>> > >>> > >>> > >>> I've been messing with this most of the afternoon, and I just can't > >> figure > >>> it out. > >>> > >>> > >>> > >>> Basically, I've got an XML file I've got to parse. I need to put the > >> data > >>> into a few Java objects, and Castor is a really easy way to do it. > >> Castor's > >>> working, and it's putting the data in the container properly. The > >> problem > >>> is that I have an XSD schema file defined to validate the XML file, but > >> I'm > >>> having issues getting Castor to validate it. The XSD is necessary > >> because I > >>> can type complete garbage into the XML file, and Castor reports success > >> even > >>> though it's totally invalid XML. > >> That's an odd statement. If it's not valid XML, Castor will report > >> exceptions. > >> > >>> I want to prevent this from happening. > >>> > >>> > >>> > >>> I'll get to it. Here're the pertinent lines from *castor.xml*, the > file > >>> that Castor uses to map the XML elements/attributes to the Java > objects: > >>> > >>> > >>> > >>> <?xml version="1.0"?> > >>> > >>> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" > >>> > >>> "http://castor.org/mapping.dtd"> > >>> > >>> > >>> > >>> <mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >>> > >>> xmlns="http://centurylogix.com/dbconfig" > >>> > >>> xsi:schemaLocation=" > >> http://centurylogix.com/dbconfigdb-config-1.0.xsd"> > >>> > >>> > >>> <class > >>> name="com.centurylogix.graph.hybrid.io.containers.DataSourceInfo"> > >>> > >>> <map-to xml="dataSource" ns-uri=" > >>> http://centurylogix.com/dbconfig" /> > >> Why on earth are you referencing the XML schema file from your mapping > >> file ? That does not make sense at all. If you want Castor to validate > >> your XML document instance against an XML schema, please refer to the > >> XML schema from the XML document instance 8and nowhere else). > >> > >>> If you need more than that, I can post it, but those should be the only > >>> relevant lines. > >>> > >>> > >>> > >>> Here're the first few lines from *db-config-1.0.xsd* which is obviously > >> the > >>> schema file used to verify the XML file: > >>> > >>> > >>> > >>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > >>> > >>> targetNamespace="http://centurylogix.com/dbconfig" > >>> > >>> xmlns="http://centurylogix.com/dbconfig" > >>> > >>> elementFormDefault="qualified"> > >>> > >>> > >>> > >>> And here're the first few lines from *db-config-sample.xml*, a sample > XML > >>> file that Castor reads in and puts into the correct Java objects: > >>> > >>> > >>> > >>> <?xml version="1.0" encoding="UTF-8"?> > >>> > >>> <dataSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >>> > >>> xsi:schemaLocation=" > >> http://centurylogix.com/dbconfigdb-config-1.0.xsd"> > >>> > >>> > >>> I do have a *castor.properties* file defined with the following > contents, > >>> per http://www.castor.org/how-to-enable-xml-validation.html: > >>> > >>> > >>> > >>> org.exolab.castor.indent=true > >>> > >>> org.exolab.castor.parser.namespaces=true > >>> > >>> org.exolab.castor.sax.features= > http://xml.org/sax/features/validation,\<http://xml.org/sax/features/validation,%5C> > <http://xml.org/sax/features/validation,%5C> > >>> > >>> > >>> http://apache.org/xml/features/validation/schema,\<http://apache.org/xml/features/validation/schema,%5C> > <http://apache.org/xml/features/validation/schema,%5C> > >>> > >>> > >> http://apache.org/xml/features/validation/schema-full-checking > >>> > >>> > >>> When I try to unmarshal the data, this is the error I get: > >>> > >>> > >>> > >>> java.lang.RuntimeException: org.exolab.castor.mapping.MappingException: > >>> Nested error: org.exolab.castor.xml.MarshalException: Attribute > >> "xmlns:xsi" > >>> must be declared for element type "mapping".{File: [not available]; > line: > >> 7; > >>> column: 74} > >>> > >>> > >>> > >>> I don't quite understand this error. "xmlns:xsi" is clearly defined > in > >> the > >>> mapping element in castor.xml. Do any of you know what I'm doing > wrong? > >>> Any ideas at all? I think this is one those things that's probably > >> simple > >>> to fix, but I've just been staring at it too long, and I'm not seeing > the > >>> solution. Thanks! > >>> > >> --------------------------------------------------------------------- > >> To unsubscribe from this list, please visit: > >> > >> http://xircles.codehaus.org/manage_email > >> > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > >

