Hi Roman,
Roman Klaehne wrote:
> Hi Werner,
>
>
> with Version 1.2 your code does not work, but with the unstable version
> 1.3rc1!
Looks like you are running into an issue that has already been fixed on
SVN trunk (and made available as part of 1.3 RC1.
>
> But if the global element is defined by a sequence (0/1 -- unbounded)
>
> #######################################
> <xs:element name="oneElement">
> <complexType>
> <xs:sequence minOccurs="0" maxOccurs="unbounded">
> <xs:element name="param" type="ParameterDefinition"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> ######################################
>
> it is not recogniized as a element definition.
>
> In the descriptor class the field _elementDefinition is set to false,
> and the Unmarshaller returns not OneElementXml but OneElementXmlItem.
>
> If I change minOccurs/maxOccurs to 1/1 then _elementDefinition is set to
> true and the Unmarshaller returns OnElementXml.
>
> But I have to define a global element as an unbounded sequence, so that
> there is no good workaround for this.
Why not ? What is the exact reason you have to set min-/maxOccurs on the
sequence rather than the enclosed element definitions ?
> Do you have any ideas regarding this strange behaviour?
No, not really. I am not sure whether this is a bug or not.
>
>
> Thank you
> /roman
>
> Werner Guttmann schrieb:
>> Hi Roman,
>>
>> I just got your sample working (against SVN trunk) by changing the code
>> to unmarshal things to:
>>
>> XMLContext context = new XMLContext();
>> context.addPackage("your.package");
>>
>> Unmarshaller unmarshaller = context.createUnmarshaller();
>>
>> Reader source = new FileReader(exampleXml);
>> Object object = unmarshaller.unmarshal(source);
>>
>> I hope this helps.
>>
>> Regards
>> Werner
>>
>> Roman Klaehne wrote:
>>> Hi Werner,
>>>
>>>
>>> before creating a Jira issue I want to be sure whether I did all correct
>>> and that it is really a bug. It is that I need the functionality as soon
>>> as possible and I think it will take a quite long time for resolving the
>>> issue.
>>>
>>> For this reason I give you exactly the data of my simple test case,
>>> plain in this mail. It would be interesting whether you can reproduce
>>> the failure:
>>>
>>> The data:
>>>
>>> ########## XML-Schema #####################
>>> ###########################################
>>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
>>> elementFormDefault="qualified" attributeFormDefault="unqualified">
>>> <xs:element name="oneElement">
>>> <xs:complexType/>
>>> </xs:element>
>>> <xs:element name="otherElement">
>>> <xs:complexType/>
>>> </xs:element>
>>> </xs:schema>
>>> ########################################
>>> ########################################
>>>
>>> ########## Binding file ################
>>> ########################################
>>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>> <binding defaultBindingType="type">
>>> <package>
>>> <name>castorgen</name>
>>> <namespace></namespace>
>>> </package>
>>>
>>> <elementBinding name="oneElement">
>>> <java-class name="OneElementXml"/>
>>> </elementBinding>
>>> <elementBinding name="otherElement">
>>> <java-class name="OtherElementXml"/>
>>> </elementBinding>
>>> </binding>
>>> ########################################
>>> ########################################
>>>
>>> ########## exampleXml ##################
>>> ########################################
>>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>> <oneElement>
>>> </oneElement>
>>> ########################################
>>> ########################################
>>>
>>> The call to Unmarshaller producing the exception:
>>>
>>> ########################################
>>> ########################################
>>> Reader source = new FileReader(exampleXml);
>>> Unmarshaller unm = new Unmarshaller();
>>> Object o = unm.unmarshal(source);
>>> ########################################
>>> ########################################
>>>
>>> The used java libraries are listed below.
>>>
>>>
>>> Best Regards
>>> /Roman
>>>
>>> Werner Guttmann schrieb:
>>>> Sorry, Roman, but no attachments to any of the mailing lists, as there's
>>>> no guarantee that they arrive at the other end.
>>>>
>>>> As already suggested, can you please create a new Jira issue and attach
>>>> your files ?
>>>>
>>>> Regards
>>>> Werner
>>>>
>>>> Roman Klaehne wrote:
>>>>> Hi Werner,
>>>>>
>>>>>
>>>>> in the attachment you will find a very simple Eclipse project, containing
>>>>>
>>>>> (i) a simple XML Schema (in xml-schema/)
>>>>>
>>>>> (ii) a binding file for the schema (in xml-schema/castor-bindings)
>>>>>
>>>>> (iii) the generated class files (in lib/castorgen.jar)
>>>>>
>>>>> (iv) a simple class castor.test.Test (in src/)
>>>>>
>>>>> (v) two xml instances in (xml-instances/)
>>>>>
>>>>> (vi) an ant build file containing the tasks for generating the java
>>>>> sources and for compiling the Test class.
>>>>>
>>>>> The following libraries has to be on the classpath (see .classpath) and
>>>>> are not included in the attached ZIP file:
>>>>>
>>>>> ant-contrib.jar
>>>>> castor-1.2-anttasks.jar
>>>>> castor-1.2-codegen.jar
>>>>> castor-1.2.jar
>>>>> castor-1.2-xml.jar
>>>>> castor-1.2-xml-schema.jar
>>>>> commons-logging.jar
>>>>> serializer.jar
>>>>> velocity-dep.jar
>>>>> xalan-2.7.0.jar
>>>>> xercesImpl.jar
>>>>> xml-apis.jar
>>>>>
>>>>> When running the test class (specifying an xml instance, e.g.,
>>>>> xml-instances/oneElement.xml) the following exception occurs:
>>>>>
>>>>> Exception in thread "main" org.exolab.castor.xml.MarshalException: The
>>>>> class for the root element 'oneElement' could not be found.{File: [not
>>>>> available]; line: 2; column: 13}
>>>>> at
>>>>> org.exolab.castor.xml.Unmarshaller.convertSAXExceptionToMarshalException(Unmarshaller.java:761)
>>>>> at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:727)
>>>>> at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:616)
>>>>> at castor.test.Test.main(Test.java:23)
>>>>> Caused by: org.xml.sax.SAXException: The class for the root element
>>>>> 'oneElement' could not be found.
>>>>> at
>>>>> org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1589)
>>>>> .....................
>>>>>
>>>>> What is going wrong?
>>>>>
>>>>>
>>>>> Best Regards!
>>>>> /Roman
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Werner Guttmann schrieb:
>>>>>> Roman,
>>>>>>
>>>>>> a test case attached to a Jira issue. I don't see a reason why this does
>>>>>> not work. Can you as such please create an issue at
>>>>>>
>>>>>> http://jira.codehaus.org/browse/CASTOR
>>>>>>
>>>>>> and attach a fully working test case. If you are using Maven, there's an
>>>>>> archetype available to assist you with this (as documented at
>>>>>> http://castor.org/maven-archetypes.html).
>>>>>>
>>>>>> Regards
>>>>>> Werner
>>>>>>
>>>>>> Roman Klaehne wrote:
>>>>>>> Hi Werner,
>>>>>>>
>>>>>>>> that should work out of the box.
>>>>>>> This sounds good. I also thought that it should work.
>>>>>>>
>>>>>>>> When you used the XML code generator to
>>>>>>>> generate the Java classes from your XML schema, it produced (so-called)
>>>>>>>> descriptor classes as well. Did you compile those as well, and are
>>>>>>>> these
>>>>>>>> available on your classpath as well ?
>>>>>>> Yes, the descriptor classes are generated and all generated classes are
>>>>>>> on the classpath.
>>>>>>>
>>>>>>> As I said the following code works fine:
>>>>>>>
>>>>>>> ***************************************************
>>>>>>> Unmarshaller u = new Unmarshaller(RootXml.class)
>>>>>>> Object o = u.unmarshal(reader)
>>>>>>> ***************************************************
>>>>>>>
>>>>>>> But if I instantiate the Unmarshaller without a "root class" argument
>>>>>>> (using the empty constructor), the error message
>>>>>>>
>>>>>>> "The class for the root element 'root' could not be found."
>>>>>>>
>>>>>>> arises.
>>>>>>>
>>>>>>> My XML-Schema also have a namespace. I don't know whether this is
>>>>>>> important. But my XML sources have a the same namespace of course.
>>>>>>>
>>>>>>> What more information you need to analyze this matter?
>>>>>>>
>>>>>>>
>>>>>>> All the best
>>>>>>> /roman
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Regards
>>>>>>>> Werner Guttmann
>>>>>>>>
>>>>>>>> Roman Klaehne wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I am using the Castor Source Code Generator together with Castor
>>>>>>>>> Unmarshaller.
>>>>>>>>>
>>>>>>>>> For the simple XML schema:
>>>>>>>>>
>>>>>>>>> *******************************************************************
>>>>>>>>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
>>>>>>>>> elementFormDefault="qualified" attributeFormDefault="unqualified">
>>>>>>>>> <xs:element name="root"/>
>>>>>>>>> <xs:element name="element"/>
>>>>>>>>> </xs:schema>
>>>>>>>>> *******************************************************************
>>>>>>>>>
>>>>>>>>> I have such a binding file:
>>>>>>>>>
>>>>>>>>> **************************************************
>>>>>>>>> <binding defaultBindingType="type">
>>>>>>>>> <elementBinding name="root">
>>>>>>>>> <java-class name="RootXml"/>
>>>>>>>>> </elementBinding>
>>>>>>>>> <elementBinding name="element">
>>>>>>>>> <java-class name="ElementXml"/>
>>>>>>>>> </elementBinding>
>>>>>>>>> </binding>
>>>>>>>>> **************************************************
>>>>>>>>>
>>>>>>>>> After generating the source code for the schema using the binding file
>>>>>>>>> above I want to unmarshall XML sources to the repective Java classes.
>>>>>>>>>
>>>>>>>>> When doing
>>>>>>>>>
>>>>>>>>> ***************************************************
>>>>>>>>> Unmarshaller u = new Unmarshaller(RootXml.class)
>>>>>>>>> Object o = u.unmarshal(reader)
>>>>>>>>> ***************************************************
>>>>>>>>>
>>>>>>>>> the object o is correctly unmarshalled and is an instance of class
>>>>>>>>> RootXml (as it should be).
>>>>>>>>>
>>>>>>>>> But when using the default constructor of Unmarshaller (without giving
>>>>>>>>> the root class RootXml.class) I get the following error message:
>>>>>>>>>
>>>>>>>>> "The class for the root element 'root' could not be found."
>>>>>>>>>
>>>>>>>>> My intention is to have XML documents with root elements "<root>" or
>>>>>>>>> "<element>" and when calling Unmarshaller.unmarshal() I don't know the
>>>>>>>>> type of the XML source (root or element). That means I want to do the
>>>>>>>>> following:
>>>>>>>>>
>>>>>>>>> ****************************************
>>>>>>>>> Unmarshaller u = new Unmarshaller();
>>>>>>>>> Object o = u.unmarshal();
>>>>>>>>>
>>>>>>>>> if(o instanceof RootXml) {
>>>>>>>>> doRoot();
>>>>>>>>> }
>>>>>>>>> else if(o instanceof ElementXml) {
>>>>>>>>> doElement();
>>>>>>>>> }
>>>>>>>>> ****************************************
>>>>>>>>>
>>>>>>>>> Do you have any ideas to get this working?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks in advance and best regards
>>>>>>>>> /Roman Klähne
>>>>>>>>> (ZIB Berlin)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> 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
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> 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
>
>
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email