How to deal with JAXB ComplexType with MixedContent data?

sambrereton

New Member
I got this XML structure:\[code\]<Tax> <Money currency="USD">0.00</Money> <Description xml:lang="en"> 17.5% Non-Recoverable <ShortName>vatspecial</ShortName> </Description></Tax>\[/code\]Notice that \[code\]Description\[/code\] node has \[code\]MixedContent\[/code\] (composed with text and XML) and this is the \[code\]XSD\[/code\] part regarding \[code\]Description\[/code\] node:\[code\]<xsd:complexType name="TaxDescriptionType"> <xsd:sequence> <xsd:element name="ShortName" type="xsd:string" /> </xsd:sequence> <xsd:attribute ref="xml:lang" /></xsd:complexType>\[/code\]Everything is ok at this point, \[code\]XJC\[/code\] outputs the generated classes like this one regarding \[code\]TaxDescriptionType\[/code\]:\[code\]package org.com.project;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlSchemaType;import javax.xml.bind.annotation.XmlType;import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;/** * <p>Java class for TaxDescriptionType complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType name="TaxDescriptionType"> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="ShortName" type="{http://www.w3.org/2001/XMLSchema}string"/> * </sequence> * <attribute ref="{http://www.w3.org/XML/1998/namespace}lang"/> * </restriction> * </complexContent> * </complexType> * </pre> * * */@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "TaxDescriptionType", propOrder = { "shortName"})public class TaxDescriptionType { @XmlElement(name = "ShortName", required = true) protected String shortName; @XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace") @XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlSchemaType(name = "NCName") protected String lang; /** * Gets the value of the shortName property. * * @return * possible object is * {@link String } * */ public String getShortName() { return shortName; } /** * Sets the value of the shortName property. * * @param value * allowed object is * {@link String } * */ public void setShortName(String value) { this.shortName = value; } /** * Gets the value of the lang property. * * @return * possible object is * {@link String } * */ public String getLang() { return lang; } /** * Sets the value of the lang property. * * @param value * allowed object is * {@link String } * */ public void setLang(String value) { this.lang = value; }}\[/code\]Then, with the above \[code\]class\[/code\] I am able to work around with the elements like this:\[code\]taxDescriptionType.setLang("en");taxDescriptionType.setShortName("vatspecial");/* missing value: 17.5% Non-Recoverable */\[/code\]But the problem is that I can't found a way to \[code\]get\[/code\] or \[code\]set\[/code\] the \[code\]17.5% Non-Recoverable\[/code\] text of the \[code\]MixedContent-ComplexType\[/code\] from the above \[code\]XML\[/code\] example.This is what I tried and it's not working:
  • Used \[code\]mixed="true"\[/code\] attribute like this:
\[code\]<xsd:complexType name="TaxDescriptionType" mixed="true">\[/code\](I think XJC is ignoring the last attribute)Doing some research, I found this:JAXB XJC compiler disregarding mixed=true on XML Schema documentsBut I am not sure if this is the way to solve this. One of the answers said that this is a bug and in the other one shows a code that transforms the \[code\]MixedContent\[/code\] into a \[code\]List<Serializable>\[/code\] and maybe the next situation will be about how to deal with this:\[code\]taxDescriptionType.getContent().add(Serializable element);\[/code\](And I really don't know how to solve or use this new kind of solution, how you add a \[code\]Serializable\[/code\] element?)Any help will be really appreciated.Thanks in advance :-)
 
Back
Top