Re: [castor-dev] Unmarshalling with different namespaces

Werner Guttmann <[email protected]> Wed, 16 May 2012 09:45:59 +0200
Newsgroups gmane.comp.java.castor.devel
Message-ID <[email protected]>
Hi,

switching this conversation to the user list, as that's where it should 
take place.

For answers to your questions, please see inline.

Kind Regards
Werner

On 15.05.2012 18:20, AJO wrote:
>
> Hi,
>
> I can't get unmarshalling to work with a combination of default namespace
> and specific namespace.
>
> The passed xml is the following:
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <clc:CalculationOutput
> xmlns:clc="http://aaa.bbb.cc/ns/Calc/CalculInOut/CalcElement"
> xmlns="http://www.example.org/example"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>    <clc:RuntimeConfiguration id="ID:a6db6635" name="runtime1" version="0.3"/>
>    <clc:Calculation>
>      <field1 ref="S442">
>        <Features>
>          <ID>28</ID>
>          <year>2011</year>
>          <quarter>1</quarter>
>          <amount>216187.23</amount>
>        </Features>
>      </field1>
>    </clc:Calculation>
> </clc:CalculationOutput>
>
>
> I can only get the above xml to get unmarshalled by adding xmlns="" to the
> ID, year, quarter and amount fields, so it seems the default schema is never
> taken into account.
>
> How can I get the above mapped in castor, taking into account the default
> schema?
>
> This is the mapping file working when I add xmlns="" to the detail fields:
> <?xml version="1.0"?>
> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
>                           "http://castor.org/mapping.dtd">
> <!--mapping xmlns:clc="http://aaa.bbb.cc/ns/Calc/CalculInOut/CalcElement"
>           xmlns="http://www.example.org/field1"
>           xsi:schemaLocation="C:/resources/schema/schemalocation.xsd"
>           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"-->
> <mapping>
>
> <class name="entity.CalculationOutput">
>      <map-to xml="CalculationOutput" ns-prefix="clc"/>

You still need to define the namespace URI to which you want this (and 
all other classes, of course) class to be bound:

<class name="entity.CalculationOutput">
   <map-to xml="CalculationOutput"
           ns-uri="http://aaa.bbb.cc/ns/Calc/CalculInOut/CalcElement"
           ns-prefix="clc"/>

Can you please add those bindings accordingly, and everything should be set.
>
>      <field name="versie" type="entity.output.CalculatorVersie">
>              <bind-xml name="RuntimeConfiguration"/>
>      </field>
>
>      <field name="field1" type="entity.output.CalculatorBw">
>              <bind-xml name="field1" location="Calculation"/>
>      </field>
> </class>
>
>
> <class name="entity.output.CalculatorBw">
>      <map-to xml="field1" ns-prefix=""/>
>
>      <field name="id" type="string">
>         <bind-xml name="ref" node="attribute"/>
>      </field>
>
>      <field name="number" type="string">
>          <bind-xml name="ID" node="element" location="Features"/>
>      </field>
>
>      <field name="year" type="string">
>              <bind-xml name="year" node="element" location="Features"/>
>      </field>
>
>      <field name="quarter" type="string">
>          <bind-xml name="quarter" node="element" location="Features"/>
>      </field>
>
>      <field name="amount" type="string">
>          <bind-xml name="amount" node="element" location="Features"/>
>      </field>
> </class>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email