XmlSchemaObject Class

Definition

Represents the root class for the Xml schema object model hierarchy and serves as a base class for classes such as the XmlSchema class.

public abstract class XmlSchemaObject
Inheritance
XmlSchemaObject
Derived

Examples

The following example displays each schema object.

using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Reflection;

public class ValidXSD
{
    public static int Main()
    {

        string xsd = "example.xsd";

        FileStream fs;
        XmlSchema schema;
        try
        {
            fs = new FileStream(xsd, FileMode.Open);
            schema = XmlSchema.Read(fs, new ValidationEventHandler(ShowCompileError));

            XmlSchemaSet schemaSet = new XmlSchemaSet();
            schemaSet.ValidationEventHandler += new ValidationEventHandler(ShowCompileError);
            schemaSet.Add(schema);
            schemaSet.Compile();

            XmlSchema compiledSchema = null;

            foreach (XmlSchema schema1 in schemaSet.Schemas())
            {
                compiledSchema = schema1;
            }

            schema = compiledSchema;

            if (schema.IsCompiled)
            {
                DisplayObjects(schema);
            }
            return 0;
        }
        catch (XmlSchemaException e)
        {
            Console.WriteLine("LineNumber = {0}", e.LineNumber);
            Console.WriteLine("LinePosition = {0}", e.LinePosition);
            Console.WriteLine("Message = {0}", e.Message);
            Console.WriteLine("Source = {0}", e.Source);
            return -1;
        }
    }

    private static void DisplayObjects(object o)
    {
        DisplayObjects(o, "");
    }
    private static void DisplayObjects(object o, string indent)
    {
        Console.WriteLine("{0}{1}", indent, o);

        foreach (PropertyInfo property in o.GetType().GetProperties())
        {
            if (property.PropertyType.FullName == "System.Xml.Schema.XmlSchemaObjectCollection")
            {

                XmlSchemaObjectCollection childObjectCollection = (XmlSchemaObjectCollection)property.GetValue(o, null);

                foreach (XmlSchemaObject schemaObject in childObjectCollection)
                {
                    DisplayObjects(schemaObject, indent + "\t");
                }
            }
        }
    }
    private static void ShowCompileError(object sender, ValidationEventArgs e)
    {
        Console.WriteLine("Validation Error: {0}", e.Message);
    }
}

The example uses the example.xsd file as input.

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:group name="testGroup">
  <xs:choice>
    <xs:any namespace="##any"/>
  </xs:choice>
  </xs:group>
  <xs:element name="myElement" >
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:group ref="testGroup" />
    </xs:choice>
  </xs:complexType>
  </xs:element>
</xs:schema>

Constructors

XmlSchemaObject()

Initializes a new instance of the XmlSchemaObject class.

Properties

LineNumber

Gets or sets the line number in the file to which the schema element refers.

LinePosition

Gets or sets the line position in the file to which the schema element refers.

Namespaces

Gets or sets the XmlSerializerNamespaces to use with this schema object.

Parent

Gets or sets the parent of this XmlSchemaObject.

SourceUri

Gets or sets the source location for the file that loaded the schema.

Methods

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Returns a string that represents the current object.

(Inherited from Object)

Applies to

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1