I have and xsd file that contains a enumerated type with options of 1 or 2. This is an extract of the file that contains the enum type CompanyCode
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="HOST">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="Header" minOccurs="0"/>
<xs:element name="MLC" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="MLCCommodity" type="MLCCommodity" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Departments" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Department" type="Department" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="CompanyCode">
<xs:restriction base="xs:nonNegativeInteger">
<xs:totalDigits value="1"/>
<xs:pattern value="\d"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IDType">
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
<xs:pattern value="\d{5}"/>
<xs:pattern value="\d{8}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HostAction">
<xs:restriction base="xs:string">
<xs:length value="1"/>
<xs:enumeration value="D"/>
<xs:enumeration value="I"/>
<xs:enumeration value="U"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BusinessPillar">
<xs:restriction base="xs:string">
<xs:length value="3"/>
<xs:enumeration value="ALM"/>
<xs:enumeration value="CCC"/>
<xs:enumeration value="CSD"/>
<xs:enumeration value="CWD"/>
<xs:enumeration value="IGA"/>
<xs:enumeration value="TAS"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Header">
<xs:sequence>
<xs:element name="IDCode">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="IDType">
<xs:attribute name="Type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1"/>
<xs:enumeration value="C"/>
<xs:enumeration value="I"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="CreationDate" type="xs:dateTime"/>
<xs:element name="Version">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="5"/>
<xs:pattern value="\d\.\d\.\d"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="PricingZone" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Business" type="BusinessPillar" minOccurs="0"/>
<xs:element name="State">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
<xs:enumeration value="ACT"/>
<xs:enumeration value="NSW"/>
<xs:enumeration value="NT"/>
<xs:enumeration value="NZ"/>
<xs:enumeration value="QLD"/>
<xs:enumeration value="SA"/>
<xs:enumeration value="TAS"/>
<xs:enumeration value="VIC"/>
<xs:enumeration value="WA"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MLCCommodity">
<xs:sequence>
<xs:element name="Description" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="Number" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="3"/>
<xs:pattern value="\d{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CompanyCode" type="CompanyCode" use="required"/>
<xs:attribute name="Action" type="HostAction" use="required"/>
</xs:complexType>
<xs:complexType name="Department">
<xs:sequence>
<xs:element name="Description" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="DepartmentNumber" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="2"/>
<xs:pattern value="\d{2}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Action" type="HostAction" use="required"/>
</xs:complexType>
</xs:schema>
Running this file through xsd.exe /c test.xsd
gives me a c# file that contains this code for the definition of the CompanyCode enum.
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
public enum CompanyCode {
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("1")]
Item1,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("2")]
Item2,
}
Using this, when I read the data from the xml file, the values that come is the string Item1 or Item2, rather than the digits 1 or 2.
Should I just use a switch statement to convert the values to the 1 and 2 that I need to store in the destination, or is there a way I can get the xml file to read the 1 or 2 directly?
A typical record in the xml file looks like this
<ns0:MLCCommodity Number="001" CompanyCode="1" Action="I">
<ns0:Description>DO NOT USE</ns0:Description>
</ns0:MLCCommodity>
Thanks