Java Sample : Simple Choice
Schema Summary This sample shows an element containing a choice of simple elements. One and only one child element may be provided. Schema Details The element AccountAdminRequest contains 3 child elements, CreateAccount, DeleteAccount and ChangeAccountPassword. Only one of these elements may be specified at a time, and one MUST be specified. All 3 of the child elements are represented in the generated code as classes (as opposed to primitive), despite being based on primitive types. This is because they all contain child attributes of there own. Elements with child elements or attributes must be represented as classes in the generated code. Sample Description The sample demonstrates what happens when more than one item in a choice is set. |
Sample Code
![]() ![]() |
|
try { // Create DVD object SimpleChoiceLib.AccountAdminRequest req = new SimpleChoiceLib.AccountAdminRequest(); // Now we can form a create account request SimpleChoiceLib.CreateAccount naReq = new SimpleChoiceLib.CreateAccount(); naReq.setUsername("Guest"); naReq.setPassword("Password"); req.setCreateAccount(naReq); SimpleChoiceLib.DeleteAccount daReq = new SimpleChoiceLib.DeleteAccount(); daReq.setUsername("Guest"); req.setDeleteAccount(daReq); System.out.println(req.toXml(true, Formatting.INDENTED, Encoding.UTF8, EOLType.CRLF)); } catch (Exception e) { System.out.println("Error: " + Usage1.getFullExceptionMsg(e)); }
|
![]() ![]() |
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="AccountAdminRequest"> <xs:complexType> <xs:choice> <xs:element name="CreateAccount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Username" type="xs:string" use="required"/> <xs:attribute name="Password" type="xs:string" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="DeleteAccount"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Username" type="xs:string" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="ChangeAccountPassword"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:date"> <xs:attribute name="Username" type="xs:string" use="required"/> <xs:attribute name="OldPassword" type="xs:string" use="required"/> <xs:attribute name="NewPassword" type="xs:string" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> |
![]() ![]() |
![]() |
![]() ![]() |
package SimpleChoiceLib; /********************************************************************************************** * Copyright (c) 2001-2023 Liquid Technologies Limited. All rights reserved. * See www.liquid-technologies.com for product details. * * Please see products End User License Agreement for distribution permissions. * * WARNING: THIS FILE IS GENERATED * Changes made outside of ##HAND_CODED_BLOCK_START blocks will be overwritten * * Generation : by Liquid XML Data Binder 19.0.14.11049 * Using Schema: SimpleChoice.xsd **********************************************************************************************/ // <summary> // This class represents the Element AccountAdminRequest // </summary> public class AccountAdminRequest extends com.liquid_technologies.ltxmllib20.XmlGeneratedClass { private static final long serialVersionUID = 13L; // <summary> // Constructor for AccountAdminRequest // </summary> // <remarks> // The class is created with all the mandatory fields populated with the // default data. // All Collection object are created. // However any 1-n relationships (these are represented as collections) are // empty. To comply with the schema these must be populated before the xml // obtained from ToXml is valid against the schema SimpleChoice.xsd // </remarks> public AccountAdminRequest() { setElementName("AccountAdminRequest"); init(); } public AccountAdminRequest(String elementName) { setElementName(elementName); init(); } // <summary> // Initializes the class // </summary> // <remarks> // This creates all the mandatory fields (populated with the default data) // All Collection object are created. // However any 1-n relationships (these are represented as collections) are // empty. To comply with the schema these must be populated before the xml // obtained from ToXml is valid against the schema SimpleChoice.xsd. // </remarks> @Override protected void init() { try { SimpleChoiceLib.Registration.iRegistrationIndicator = 0; // causes registration to take place _createAccount = null; _deleteAccount = null; _changeAccountPassword = null; _validElement = ""; // ##HAND_CODED_BLOCK_START ID="Additional Inits"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS // Add Additional initialization code here... // ##HAND_CODED_BLOCK_END ID="Additional Inits"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS getClassAttributeInfo(); getClassElementInfo(); } catch (Exception ex) { // should never happen ex.printStackTrace(); throw new InternalError(); } } protected void ClearChoice(String selectedElement) { try { _createAccount = null; _deleteAccount = null; _changeAccountPassword = null; _validElement = selectedElement; } catch (Exception ex) { // should never happen ex.printStackTrace(); throw new InternalError(); } } // <summary> // Allows the class to be copied // </summary> // <remarks> // Performs a 'deep copy' of all the data in the class (and its children) // </remarks> @Override public Object clone() throws CloneNotSupportedException { try { SimpleChoiceLib.AccountAdminRequest newObject = (SimpleChoiceLib.AccountAdminRequest)super.clone(); // clone, creates a bitwise copy of the class, so all the collections are the // same as the parents. Init will re-create our own collections, and classes, // preventing objects being shared between the new an original objects newObject.init(); newObject._createAccount = null; if (_createAccount != null) newObject._createAccount = (SimpleChoiceLib.CreateAccount)_createAccount.clone(); newObject._deleteAccount = null; if (_deleteAccount != null) newObject._deleteAccount = (SimpleChoiceLib.DeleteAccount)_deleteAccount.clone(); newObject._changeAccountPassword = null; if (_changeAccountPassword != null) newObject._changeAccountPassword = (SimpleChoiceLib.ChangeAccountPassword)_changeAccountPassword.clone(); newObject._validElement = _validElement; // ##HAND_CODED_BLOCK_START ID="Additional clone"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS // Add Additional clone code here... // ##HAND_CODED_BLOCK_END ID="Additional clone"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS return newObject; } catch (CloneNotSupportedException e) { // should never happen e.printStackTrace(); throw new InternalError(); } } @Override public String getTargetNamespace() { return ""; } // <summary> // Represents an optional Element in the XML document // </summary> // <remarks> // This property is represented as an Element in the XML. // It is optional, initially it is null. // Only one Element within this class may be set at a time, setting this property when another element is already set will raise an exception. setting this property to null will allow another element to be selected // </remarks> public SimpleChoiceLib.CreateAccount getCreateAccount() { return _createAccount; } public void setCreateAccount(SimpleChoiceLib.CreateAccount value) throws com.liquid_technologies.ltxmllib20.exceptions.LtException { // The class represents a choice, so prevent more than one element from being selected ClearChoice((value == null)?"":"CreateAccount"); // remove selection if (value == null) _createAccount = null; else { setElementName(value.getBase(), "CreateAccount"); _createAccount = value; } } protected SimpleChoiceLib.CreateAccount _createAccount; // <summary> // Represents an optional Element in the XML document // </summary> // <remarks> // This property is represented as an Element in the XML. // It is optional, initially it is null. // Only one Element within this class may be set at a time, setting this property when another element is already set will raise an exception. setting this property to null will allow another element to be selected // </remarks> public SimpleChoiceLib.DeleteAccount getDeleteAccount() { return _deleteAccount; } public void setDeleteAccount(SimpleChoiceLib.DeleteAccount value) throws com.liquid_technologies.ltxmllib20.exceptions.LtException { // The class represents a choice, so prevent more than one element from being selected ClearChoice((value == null)?"":"DeleteAccount"); // remove selection if (value == null) _deleteAccount = null; else { setElementName(value.getBase(), "DeleteAccount"); _deleteAccount = value; } } protected SimpleChoiceLib.DeleteAccount _deleteAccount; // <summary> // Represents an optional Element in the XML document // </summary> // <remarks> // This property is represented as an Element in the XML. // It is optional, initially it is null. // Only one Element within this class may be set at a time, setting this property when another element is already set will raise an exception. setting this property to null will allow another element to be selected // </remarks> public SimpleChoiceLib.ChangeAccountPassword getChangeAccountPassword() { return _changeAccountPassword; } public void setChangeAccountPassword(SimpleChoiceLib.ChangeAccountPassword value) throws com.liquid_technologies.ltxmllib20.exceptions.LtException { // The class represents a choice, so prevent more than one element from being selected ClearChoice((value == null)?"":"ChangeAccountPassword"); // remove selection if (value == null) _changeAccountPassword = null; else { setElementName(value.getBase(), "ChangeAccountPassword"); _changeAccountPassword = value; } } protected SimpleChoiceLib.ChangeAccountPassword _changeAccountPassword; public String getChoiceSelectedElement() { return _validElement; } protected String _validElement; @Override public String getNamespace() { return ""; } @Override public com.liquid_technologies.ltxmllib20.XmlObjectBase getBase() { return this; } protected void onEvent(com.liquid_technologies.ltxmllib20.XmlObjectBase msgSource, int msgType, Object data) { if (msgType == CollectionChangeEvent) { } } private static com.liquid_technologies.ltxmllib20.ParentElementInfo __parentElementInfo = null; private static com.liquid_technologies.ltxmllib20.ElementInfo[] __elementInfo = null; private static com.liquid_technologies.ltxmllib20.AttributeInfo[] __attributeInfo = null; protected com.liquid_technologies.ltxmllib20.ParentElementInfo getClassInfo() throws Exception { if (__parentElementInfo == null) { __parentElementInfo = new com.liquid_technologies.ltxmllib20.ParentElementInfo( com.liquid_technologies.ltxmllib20.XmlObjectBase.XmlElementGroupType.CHOICE, com.liquid_technologies.ltxmllib20.XmlObjectBase.XmlElementType.ELEMENT, "AccountAdminRequest", "", true, false, null, null, com.liquid_technologies.ltxmllib20.Conversions.ConversionType.TYPE_NONE, com.liquid_technologies.ltxmllib20.WhitespaceRule.NONE, null, false); } return __parentElementInfo; } protected com.liquid_technologies.ltxmllib20.ElementInfo[] getClassElementInfo() throws Exception { if (__elementInfo == null) { __elementInfo = new com.liquid_technologies.ltxmllib20.ElementInfo[] { new com.liquid_technologies.ltxmllib20.data.ElementInfoChoiceClsOpt("CreateAccount", "", findGetterMethod("SimpleChoiceLib.AccountAdminRequest", "getCreateAccount"), findSetterMethod("SimpleChoiceLib.AccountAdminRequest", "setCreateAccount", "SimpleChoiceLib.CreateAccount"), com.liquid_technologies.ltxmllib20.XmlObjectBase.XmlElementType.ELEMENT, SimpleChoiceLib.CreateAccount.class) ,new com.liquid_technologies.ltxmllib20.data.ElementInfoChoiceClsOpt("DeleteAccount", "", findGetterMethod("SimpleChoiceLib.AccountAdminRequest", "getDeleteAccount"), findSetterMethod("SimpleChoiceLib.AccountAdminRequest", "setDeleteAccount", "SimpleChoiceLib.DeleteAccount"), com.liquid_technologies.ltxmllib20.XmlObjectBase.XmlElementType.ELEMENT, SimpleChoiceLib.DeleteAccount.class) ,new com.liquid_technologies.ltxmllib20.data.ElementInfoChoiceClsOpt("ChangeAccountPassword", "", findGetterMethod("SimpleChoiceLib.AccountAdminRequest", "getChangeAccountPassword"), findSetterMethod("SimpleChoiceLib.AccountAdminRequest", "setChangeAccountPassword", "SimpleChoiceLib.ChangeAccountPassword"), com.liquid_technologies.ltxmllib20.XmlObjectBase.XmlElementType.ELEMENT, SimpleChoiceLib.ChangeAccountPassword.class) }; } return __elementInfo; } protected com.liquid_technologies.ltxmllib20.AttributeInfo[] getClassAttributeInfo() throws Exception { if (__attributeInfo==null) { __attributeInfo = new com.liquid_technologies.ltxmllib20.AttributeInfo[] { }; } return __attributeInfo; } // ##HAND_CODED_BLOCK_START ID="Additional Methods"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS // Add Additional Methods and members here... // ##HAND_CODED_BLOCK_END ID="Additional Methods"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS } |
Main Menu | Samples List |