C# Sample : Simple Choice
In This Topic
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 the element with ChangeAccountPassword element defined.
|
|
Sample XML File
Sample1.xml |
|
<?xml version="1.0" encoding="UTF-8"?>
<AccountAdminRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\Schema\SimpleChoice.xsd">
<CreateAccount Username="Guest" Password="Password"/>
</AccountAdminRequest>
|
Sample Code
Read Sample |
|
public static void SampleRead(string FilePath)
{
SimpleChoiceLib.AccountAdminRequest req = new SimpleChoiceLib.AccountAdminRequest();
req.FromXmlFile(FilePath);
if (req.ChoiceSelectedElement == "ChangeAccountPassword")
{
Console.WriteLine("Change the password for the account {0}, from {1} to {2}", req.ChangeAccountPassword.Username, req.ChangeAccountPassword.OldPassword, req.ChangeAccountPassword.NewPassword);
}
else if (req.ChoiceSelectedElement == "CreateAccount")
{
Console.WriteLine("Create New account {0} with a password {1}", req.CreateAccount.Username, req.CreateAccount.Password);
}
else if (req.ChoiceSelectedElement == "DeleteAccount")
{
Console.WriteLine("Delete the account {0}", req.DeleteAccount.Username);
}
else
{
Console.WriteLine("Unknown selected element {0}", req.ChoiceSelectedElement);
}
}
...
SampleRead(MainCls.SamplePath + "SimpleChoice\\Samples\\Sample1.xml");
Output
Create New account Guest with a password Password
|
|
Write Sample |
|
SimpleChoiceLib.AccountAdminRequest req = new SimpleChoiceLib.AccountAdminRequest();
SimpleChoiceLib.CreateAccount naReq = new SimpleChoiceLib.CreateAccount();
naReq.Username = "Guest";
naReq.Password = "Password";
req.CreateAccount = naReq;
Console.WriteLine(req.ToXml(true, System.Xml.Formatting.Indented, LiquidTechnologies.Runtime.EOLType.CRLF));
Output
<?xml version="1.0"?>
<!--Created by Liquid XML Data Binding Libraries (www.liquid-technologies.com) for Liquid Technologies Ltd -->
<AccountAdminRequest xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<CreateAccount Username="Guest" Password="Password"/>
</AccountAdminRequest>
|
|
XSD Source Files
SimpleChoice.xsd |
|
<?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>
|
Schema Diagrams |
|
|
Generated Files
AccountAdminRequest.cs |
|
���using System;
using System.Xml;
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
public AccountAdminRequest()
{
_elementName = "AccountAdminRequest";
Init();
}
public AccountAdminRequest(string elementName)
{
_elementName = elementName;
Init();
}
#endregion
#region Initialization methods for the class
protected override void Init()
{
SimpleChoiceLib.Registration.iRegistrationIndicator = 0;
m_CreateAccount = null;
m_DeleteAccount = null;
m_ChangeAccountPassword = null;
_validElement = "";
}
protected void ClearChoice(string selectedElement)
{
m_CreateAccount = null;
m_DeleteAccount = null;
m_ChangeAccountPassword = null;
_validElement = selectedElement;
}
#endregion
#region ICloneable Interface
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;
return newObject;
}
#endregion
#region Member variables
protected override string TargetNamespace
{
get { return ""; }
}
#region Attribute - CreateAccount
[LiquidTechnologies.Runtime.ElementInfoChoiceClsOpt("CreateAccount", "", LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, typeof(SimpleChoiceLib.CreateAccount))]
public SimpleChoiceLib.CreateAccount CreateAccount
{
get
{
return m_CreateAccount;
}
set
{
ClearChoice((value == null)?"":"CreateAccount");
if (value == null)
m_CreateAccount = null;
else
{
SetElementName(value, "CreateAccount");
m_CreateAccount = value;
}
}
}
protected SimpleChoiceLib.CreateAccount m_CreateAccount;
#endregion
#region Attribute - DeleteAccount
[LiquidTechnologies.Runtime.ElementInfoChoiceClsOpt("DeleteAccount", "", LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, typeof(SimpleChoiceLib.DeleteAccount))]
public SimpleChoiceLib.DeleteAccount DeleteAccount
{
get
{
return m_DeleteAccount;
}
set
{
ClearChoice((value == null)?"":"DeleteAccount");
if (value == null)
m_DeleteAccount = null;
else
{
SetElementName(value, "DeleteAccount");
m_DeleteAccount = value;
}
}
}
protected SimpleChoiceLib.DeleteAccount m_DeleteAccount;
#endregion
#region Attribute - ChangeAccountPassword
[LiquidTechnologies.Runtime.ElementInfoChoiceClsOpt("ChangeAccountPassword", "", LiquidTechnologies.Runtime.XmlObjectBase.XmlElementType.Element, typeof(SimpleChoiceLib.ChangeAccountPassword))]
public SimpleChoiceLib.ChangeAccountPassword ChangeAccountPassword
{
get
{
return m_ChangeAccountPassword;
}
set
{
ClearChoice((value == null)?"":"ChangeAccountPassword");
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
}
}
|