Quoting Werner Guttmann <[EMAIL PROTECTED]>: > Why are you actually creating a mapping file in this case, when you could be > using Castor's XML code generator to generate Java classes (and descriptor > classes that are an internal representation of the mapping file you are > providing) out of the box ?
I have a pre-existing persistence library that was built to access our database. The persistence library already has its own "bean" objects for holding data. I am attempting to build an import application to import XML data files from another group. The other group already has an XSD defined for a file format that is already in use for other data feeds that they perform. My choices were to either (a) create a whole new set of objects for this XSD using Castor and then write custom code to map all of those new objects to my existing persistence library objects or (b) write a mapping file to map the existing XSD to the existing objects. (a) totally defeats the purpose of the whole "buy vs. build" concept and if I had to write my own code I could probably get better performance and have more control if I parsed the XML myself and translated to my objects directly. So, I chose to go with (b) in hopes that I would have to write less code and maintaining changes on either side would be simpler because I would only have to change a mapping file. And, since Castor was the only tool that I could find that allowed for a mapping between pre-existing XSD and Java objects, I chose to go with Castor. Since my email yesterday I have worked through some other mapping file/code combinations and come out with a few other results. All of them consist of some sort of prefix being prepended to the XML attributes and all of them result in an invalid XML document. Because of this, I have resorted to getting the XML as close as I can to what I expect through Castor, turning off Castor's marshalling validation (which didn't seem work anyway, which I guess is a different issue), and then manually reformatting the XML so that it is valid. So, does anyone know the correct way to get my attributes marshalled without a namespace prefix and my elements marshalled with my namespace prefix? (Along with the correct namespace declarations in my XML.) I'd be happy to include the XSD and mapping file that I'm working with if that helps. Thank you, Mike > > -----Ursprüngliche Nachricht----- > > Von: Mike Ferraro [mailto:[EMAIL PROTECTED] > > Gesendet: Mittwoch, 07. März 2007 19:07 > > An: [email protected] > > Betreff: [castor-user] [XML] Problem with marshalling and namespace > > prefixes > > > > Hello, > > > > I have created a mapping file to map an existing XSD to existing Java > > classes. > > Unmarshalling the XML seems to run fine, but I am having trouble getting > > valid > > XML when marshalling the objects. I am trying to marshal an object and > > create > > XML with namespace prefixes for the elements and no prefixes for the > > attributes, as defined by the XSD I'm working with, like this: > > > > <pre:rootElement > > xmlns="http://my.name.space" > > xmlns:pre="http://my.name.space" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://my.name.space http://my.xsd.location" > > attribute1="valueA" > > attribute2="valueB"> > > <pre:element1 attribute1="valueA" > > attribute2="valueB">elementValue</pre:element1> > > </pre:rootElement> > > > > In my mapping file, the attributes are mapped as "attribute1" and elements > > are > > mapped as "pre:element1". I have tried several different variations in my > > marshalling code, but the three results that I keep getting are (all of > > which > > are invalid according to the XSD): > > > > 1. Elements and attribute both have my namespace prefix. > > 2. Elements and attribute both do not have any prefixes. > > 3. Elements have my namespace prefix and attributes are given an "ns1" > > prefix > > for a Castor namespace. > > > > I modeled my mapping file after the example in the XML validation section > > in the > > Castor documentation and the namespaces look like this: > > > > <mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns="http://castor.exolab.org/" > > xmlns:pre="http://my.name.space" > > xsi:schemaLocation="http://castor.exolab.org/ mapping.xsd"> > > > > I have been trying different variations on the above header and of this > > marshalling code, with no luck: > > > > marshaller.setNamespaceMapping("", "http://my.name.space"); > > marshaller.setNamespaceMapping("pre", "http://my.name.space"); > > marshaller.setSchemaLocation("http://my.name.space > > http://my.xsd.location"); > > marshaller.marshal(valueObject); > > > > Does anyone know the correct way to get my attributes marshalled without a > > namespace prefix and my elements marshalled with my namespace prefix? > > (Along > > with the correct namespace declarations in my XML.) > > > > Thank you, > > Mike > > > > --------------------------------------------------------------------- > > 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 > > --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email

