users@jaxb.java.net

Re: JAXB Unmarshalling - missing object when only an attribute present

From: StickyLlama <scott.burnett_at_toyota-europe.com>
Date: Tue, 9 Dec 2008 00:10:38 -0800 (PST)

Wolfgang,

Major apologies but it ended up being a silly error my side with a valid
version of the test xml.
However, if it helps - your answer led me to focus entirely on the real
problem
Thanks for you effort and help
Cheers
Scott


Wolfgang Laun-2 wrote:
>
> I cannot reproduce this with JAXB 2.1 bundled with Java 1.6.
> Below is my complete test. Please compare this to what you have,
> perhaps I've overlooked something.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:complexType name="DocType">
> <xs:sequence>
> <xs:element name="begin" type="xs:string"/>
> <xs:element name="outer" type="OuterType"/>
> <xs:element name="end" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
>
> <xs:complexType name="OuterType">
> <xs:sequence>
> <xs:element name="inner1" type="xs:string" minOccurs="0"/>
> <xs:element name="inner2" type="xs:string" minOccurs="0"/>
> </xs:sequence>
> <xs:attribute name="outerAttribute" type="xs:string" use="optional"/>
> </xs:complexType>
>
> <xs:element name="doc" type="DocType"/>
>
> </xs:schema>
>
> == oa.xml =========
>
> <doc>
> <begin>begin</begin>
> <outer outerAttribute="theOuterAttributeValue"/>
> <end>end</end>
> </doc>
>
> ================
>
> import java.io.*;
> import javax.xml.bind.*;
>
> import generated.*;
>
> public class Main {
>
> static void unmarshal() throws Exception {
> JAXBContext jc = JAXBContext.newInstance( "generated" );
> Unmarshaller u = jc.createUnmarshaller();
> JAXBElement<DocType> jbe =
> (JAXBElement)u.unmarshal( new FileInputStream( "oa.xml" ) );
> DocType dt = jbe.getValue();
> OuterType ot = dt.getOuter();
> System.out.println( ot.getOuterAttribute() );
> }
>
> public static void main( String[] args ) throws Exception {
> unmarshal();
> }
> }
>
> Wolfgang
>
>
>
> On Mon, Dec 8, 2008 at 5:02 PM, StickyLlama
> <scott.burnett_at_toyota-europe.com
>> wrote:
>
>>
>> Hi,
>>
>> I'm JAXB 2.1 unmarshalling some xml which contains something like this
>>
>> <.....>
>> <outerElement attributeName="XXXXXXXXXXXXXXXXXX">
>> <innerElement1></innerElelment1>
>> <innerElement2></innerElelment2>
>> </outerElement>
>> </....>
>>
>> outerElement is optional
>> Both innerElement1 and innerElement2 are optional
>> and attributeName is mandatory
>>
>> So in the final unmarshalled object - if either innerElement1 or
>> innerElement2 are present - I get an outerElement object present
>> If it is just the attributeName which is present - I get outerElement =
>> null
>>
>> Therefore I lose the attributeName ?!
>>
>> How do I get an outerElement to be formed when only the attributeName is
>> present ?
>>
>> Is this a binding setting in the xjb file ?
>>
>> Or is this a property I can set on the unmarshaller ?
>>
>> Thanks for your help
>> --
>> View this message in context:
>> http://www.nabble.com/JAXB-Unmarshalling---missing-object-when-only-an-attribute-present-tp20898028p20898028.html
>> Sent from the java.net - jaxb users mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
>> For additional commands, e-mail: users-help_at_jaxb.dev.java.net
>>
>>
>
>

-- 
View this message in context: http://www.nabble.com/JAXB-Unmarshalling---missing-object-when-only-an-attribute-present-tp20898028p20910369.html
Sent from the java.net - jaxb users mailing list archive at Nabble.com.