Hi Günther, First off, the documentation is incorrect in not listing the nillable attribute for the <value> element. It looks like there's some sort of glitch in the generated code when it comes to unmarshalling these values, though - you shouldn't get that parser error that you're seeing. >From a quick look at my test cases it looks like I didn't try out the case of a nillable <value> following another <value> (only as the first thing inside a <structure> or <collection>), and that's probably leaving the parser in the wrong state. I'll investigate this.
Thanks, - Dennis Dennis M. Sosnoski SOA and Web Services in Java Training and Consulting http://www.sosnoski.com - http://www.sosnoski.co.nz Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117 Günther Wieser wrote: > hi, > > i found some confusing information regarding the usage of xsi:nil to > indicate if an obejct or value is null. > > on the mailing list i found the following entry: > > [jibx-users] JiBX 1.1 beta4 release > Dennis Sosnoski > Thu, 25 May 2006 21:26:05 -0700 > > 4. Added nillable attribute to object group and value element, > supporting the xsi:nil attribute at runtime (requires element name, > not allowed on abstract mapping) > > in the docs i found out that the value element doesn't support > nillable=true. interestingly i can add that to my binding and it > compiles well. but when it comes to runtime, i get a weird exception: > > java.lang.IndexOutOfBoundsException: only START_TAG can have > attributes END_TAG seen ...</street>\r\n\t\t<city xsi:nil="true" />... > @10:26 > at org.xmlpull.mxp1.MXParser.getAttributeValue(MXParser.java:927) > at > org.jibx.runtime.impl.XMLPullReaderFactory$XMLPullReader.getAttributeValue(XMLPullReaderFactory.java:395) > at > org.jibx.runtime.impl.UnmarshallingContext.getAttributeValue(UnmarshallingContext.java:356) > at > org.jibx.runtime.impl.UnmarshallingContext.attributeBoolean(UnmarshallingContext.java:1881) > at > data.Address.JiBX_C__JavaDev322_JiXB_Test_src_customer_binding_unmarshal_1_1(Address.java) > at > data.Customer.JiBX_C__JavaDev322_JiXB_Test_src_customer_binding_unmarshal_1_2(Customer.java) > at > data.JiBX_C__JavaDev322_JiXB_Test_src_customer_bindingCustomer_access1.unmarshal() > at > org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(UnmarshallingContext.java:2537) > at > org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(UnmarshallingContext.java:2680) > at test.CustomerWAddressTest.main(CustomerWAddressTest.java:23) > > i don't get this is i remove 'nillable=true' from the binding, but > then of course the value is not null, it's an empty string (which > means something different in our case). > > here's the binding: > <?xml version="1.0" encoding="ISO-8859-2"?> > <binding> > <mapping name="customer" class="data.Customer" flexible="true" > ordered="false" allow-repeats="true"> > <value name="id" set-method="setJiXBId" get-method="getJiXBId"/> > <value name="first" set-method="setJiXBFirstName" > get-method="getJiXBFirstName"/> > <value name="last" set-method="setJiXBLastName" > get-method="getJiXBLastName"/> > <!-- <collection field="addresses" flexible="true" ordered="false"> --> > <structure name="address" type="data.Address" allow-repeats="true" > flexible="true" ordered="false" set-method="addAddress" > get-method="getAddress"> > <value name="id" set-method="setJiXBId" get-method="getJiXBId"/> > <value name="street" set-method="setJiXBStreet" > get-method="getJiXBStreet" usage="optional"/> > <value name="city" set-method="setJiXBCity" get-method="getJiXBCity" > usage="optional" nillable="true"/> > </structure> > <!-- </collection> --> > </mapping> > </binding> > > and here's the example data: > <?xml version="1.0" encoding="ISO-8859-2"?> > <customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > <id>1234</id> > <first>Heinz</first> > <last>Prueller</last> > <asdasd>asasd</asdasd> > <address> > <id>111</id> > <street>Daham 1</street> > <city xsi:nil="true" /> > </address> > </customer> > > so do i need to change something in my binding? could i use structure > instead of value (and if how can i do that)? > > br, > günther > > -- > Günther Wieser > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > ------------------------------------------------------------------------ > > _______________________________________________ > jibx-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/jibx-users > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ jibx-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jibx-users
