I am parsing my XSD file. (including some elements, complexTypes and simpleTypes)
I want to define each of them by type property.
My XSD file is a bit like this.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="mainInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="DocumentInfo" minOccurs="1" maxOccurs="1" />
<xsd:element ref="Prerequisite" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DocumentInfo">
<xsd:complexType>
<xsd:attribute name="Name" type="xsd:string" />
<xsd:attribute name="Description" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="Prerequisite">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Type" type="Prerequisite.Type.type" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="Prerequisite.Type.type">
<xsd:attribute name="SystemType" type="SystemTypeEnum" />
</xsd:complexType>
<xsd:simpleType name="SystemTypeEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Linux" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
My example is below
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallback);
schemaSet.Add("http://www.w3.org/2001/XMLSchema", "D:\\TMP\\test.xsd");
schemaSet.Compile();
XmlSchema customerSchema = null;
foreach (XmlSchema schema in schemaSet.Schemas())
{
customerSchema = schema;
}
foreach (XmlSchemaElement element in customerSchema.Elements.Values)
{
XmlSchemaComplexType complexType = element.ElementSchemaType as XmlSchemaComplexType;
if (aSchemaType.TypeCode == XmlTypeCode.None)
{
foreach (XmlSchemaElement element in customerSchema.Elements.Values)
{
XmlSchemaComplexType complexType = element.ElementSchemaType as XmlSchemaComplexType;
Dictionary<string, object> aTempDict = new Dictionary<string,object>();
mainDict.Add(element.Name, aTempDict);
parseElement(complexType, ref aTempDict);
break;
}
}
else if (attribute.AttributeSchemaType.TypeCode == ???)
{
}
}
How to determine the type of an attribute - is it SimpleType with its property or other good expression?
source
share