Reads a XML schema file and returns the information found in that. : Schema « XML « C# / C Sharp

Reads a XML schema file and returns the information found in that.


using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Xml;
using System.Xml.Schema;

namespace Thinktecture.Tools.Wscf.Services.ServiceDescription.Helpers
    internal static class SchemaUtility
        /// <summary>
        /// </summary>
        /// <returns></returns>
        internal static ArrayList GetIntrinsicSimpleTypesNames()
            ArrayList primitiveNames = new ArrayList();
            Assembly assembly = Assembly.GetAssembly(typeof(XmlSchema));

            Type type = assembly.GetType("System.Xml.Schema.DatatypeImplementation");
            FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);

            foreach (FieldInfo fi in fields)
                int index = fi.Name.IndexOf("c_");
                if (index > -1)
                    string fieldName = fi.Name.Substring(index + 2);
                    primitiveNames.Add("xsd:" + fieldName);

            return primitiveNames;

        /// <summary>
        /// Reads a XML schema file and returns the information found in that.
        /// </summary>
        /// <param name="schemaFile">The XML schema file to read information from.</param>
        /// <param name="schemaNamespace">Ouput parameter which returns the namespace of the specified XML schema file.</param>
        /// <returns>
        /// An <see cref="ArrayList"/> with three items. 
        /// 1. Contains an <see cref="ArrayList"/> of <see cref="XmlSchemaElement"/> objects.
        /// 2. Contains an <see cref="ArrayList"/> of schema element names.
        /// 3. Contains a <see cref="SchemaElements"/> object. 
        /// </returns>
        internal static ArrayList GetSchemasFromXsd(string schemaFile, out string schemaNamespace)
            XmlTextReader reader = null;
            ArrayList schemas;
            ArrayList schemaNames;
      List<SchemaElement> sElements;

                reader = new XmlTextReader(schemaFile);

                XmlSchema schema = XmlSchema.Read(reader, null);
                string schemaTargetNamesapce = schema.TargetNamespace;
                schemaNamespace = schemaTargetNamesapce;

                ArrayList xmlSchemaElements = new ArrayList();
                schemas = new ArrayList();
                schemaNames = new ArrayList();
        sElements = new List<SchemaElement>();

                foreach (XmlSchemaObject xmlObj in schema.Items)
                    if (xmlObj is XmlSchemaAnnotated) xmlSchemaElements.Add(xmlObj);

                foreach (XmlSchemaAnnotated obj in xmlSchemaElements)
                    if (obj is XmlSchemaElement)
                        XmlSchemaElement xse = (XmlSchemaElement)obj;

                        sElements.Add(new SchemaElement(schemaTargetNamesapce, xse.Name));


                ArrayList result = new ArrayList();

                return result;
            catch (Exception ex)
                throw new InvalidOperationException("Error occurred while reading the schema file.", ex);
                if (reader != null && reader.ReadState != ReadState.Closed)


Related examples in the same category

1.Set XmlReaderSettings
2.Choose ValidationType
3.Validate an XML Document Against a Schema
4.Validate Schema
5.Use XML schema to validate XML documents
6.Use XmlReaderSettings to validate the Xml document
7.Strip Non Valid XML Characters.
8.Is Well Formed Xml
9.XmlSchema is an in-memory representation of an XML Schema
10.Is Xml Valid
11.Xml Validation Helper
12.Get Intrinsic Simple Types Names from System.Xml.Schema.DatatypeImplementation
13.XML reading functionality