C# 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.Username = "Guest"; naReq.Password = "Password"; req.CreateAccount = naReq; SimpleChoiceLib.DeleteAccount daReq = new SimpleChoiceLib.DeleteAccount(); daReq.Username = "Guest"; req.DeleteAccount = daReq; Console.WriteLine(req.ToXml(true, System.Xml.Formatting.Indented, LiquidTechnologies.Runtime.EOLType.CRLF)); } catch (LiquidTechnologies.Runtime.LtException e) { Console.WriteLine("Error: {0}", MainCls.GetFullErrorMessage(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> |
![]() ![]() |
![]() |
![]() ![]() |
���using System; using System.Xml; /********************************************************************************************** * Copyright (c) 2001-2025 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 **********************************************************************************************/ namespace SimpleChoiceLib { /// <summary> /// This class represents the Element AccountAdminRequest /// </summary> [LiquidTechnologies.Runtime.XmlObjectInfo(LiquidTechnologies.Runtime.XmlObjectBase.XmlElementGroupType.Choice, LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, "AccountAdminRequest", "", true, false, false)] public partial class AccountAdminRequest : SimpleChoiceLib.XmlCommonBase { #region Constructors /// <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() { _elementName = "AccountAdminRequest"; Init(); } public AccountAdminRequest(string elementName) { _elementName = elementName; Init(); } #endregion #region Initialization methods for the class /// <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> protected override void Init() { SimpleChoiceLib.Registration.iRegistrationIndicator = 0; // causes registration to take place m_CreateAccount = null; m_DeleteAccount = null; m_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 } protected void ClearChoice(string selectedElement) { m_CreateAccount = null; m_DeleteAccount = null; m_ChangeAccountPassword = null; _validElement = selectedElement; } #endregion #region ICloneable Interface /// <summary> /// Allows the class to be copied /// </summary> /// <remarks> /// Performs a 'deep copy' of all the data in the class (and its children) /// </remarks> public override object Clone() { SimpleChoiceLib.AccountAdminRequest newObject = new SimpleChoiceLib.AccountAdminRequest(_elementName); newObject.m_CreateAccount = null; if (m_CreateAccount != null) newObject.m_CreateAccount = (SimpleChoiceLib.CreateAccount)m_CreateAccount.Clone(); newObject.m_DeleteAccount = null; if (m_DeleteAccount != null) newObject.m_DeleteAccount = (SimpleChoiceLib.DeleteAccount)m_DeleteAccount.Clone(); newObject.m_ChangeAccountPassword = null; if (m_ChangeAccountPassword != null) newObject.m_ChangeAccountPassword = (SimpleChoiceLib.ChangeAccountPassword)m_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; } #endregion #region Member variables protected override string TargetNamespace { get { return ""; } } #region Attribute - 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> [LiquidTechnologies.Runtime.ElementInfoChoiceClsOpt("CreateAccount", "", LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, typeof(SimpleChoiceLib.CreateAccount))] public SimpleChoiceLib.CreateAccount CreateAccount { get { return m_CreateAccount; } set { // The class represents a choice, so prevent more than one element from being selected ClearChoice((value == null)?"":"CreateAccount"); // remove selection if (value == null) m_CreateAccount = null; else { SetElementName(value, "CreateAccount"); m_CreateAccount = value; } } } protected SimpleChoiceLib.CreateAccount m_CreateAccount; #endregion #region Attribute - 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> [LiquidTechnologies.Runtime.ElementInfoChoiceClsOpt("DeleteAccount", "", LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, typeof(SimpleChoiceLib.DeleteAccount))] public SimpleChoiceLib.DeleteAccount DeleteAccount { get { return m_DeleteAccount; } set { // The class represents a choice, so prevent more than one element from being selected ClearChoice((value == null)?"":"DeleteAccount"); // remove selection if (value == null) m_DeleteAccount = null; else { SetElementName(value, "DeleteAccount"); m_DeleteAccount = value; } } } protected SimpleChoiceLib.DeleteAccount m_DeleteAccount; #endregion #region Attribute - ChangeAccountPassword /// <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> [LiquidTechnologies.Runtime.ElementInfoChoiceClsOpt("ChangeAccountPassword", "", LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, typeof(SimpleChoiceLib.ChangeAccountPassword))] public SimpleChoiceLib.ChangeAccountPassword ChangeAccountPassword { get { return m_ChangeAccountPassword; } set { // The class represents a choice, so prevent more than one element from being selected ClearChoice((value == null)?"":"ChangeAccountPassword"); // remove selection if (value == null) m_ChangeAccountPassword = null; else { SetElementName(value, "ChangeAccountPassword"); m_ChangeAccountPassword = value; } } } protected SimpleChoiceLib.ChangeAccountPassword m_ChangeAccountPassword; #endregion public string ChoiceSelectedElement { get { return _validElement; } } protected string _validElement; #region Attribute - Namespace public override string Namespace { get { return ""; } } #endregion #region Attribute - GetBase public override LiquidTechnologies.Runtime.XmlObjectBase GetBase() { return this; } #endregion #endregion // ##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 |