Csharp/CSharp Tutorial/XML/XmlSchema

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Create Xml schema

<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.Schema;

   public class MainClass
   {
       public static void Main()
       {
           XmlSchema schema = new XmlSchema();
           XmlSchemaSimpleType nametype = new XmlSchemaSimpleType();
           XmlSchemaSimpleTypeRestriction nameRes = new XmlSchemaSimpleTypeRestriction();
           nameRes.BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
           XmlSchemaMinLengthFacet nameFacet1 = new XmlSchemaMinLengthFacet();
           nameFacet1.Value = "3";
           XmlSchemaMaxLengthFacet nameFacet2 = new XmlSchemaMaxLengthFacet();
           nameFacet2.Value = "255";
           nameRes.Facets.Add(nameFacet1);
           nameRes.Facets.Add(nameFacet2);
           nametype.Content = nameRes;
           XmlSchemaSimpleType phonetype = new XmlSchemaSimpleType();
           XmlSchemaSimpleTypeRestriction phoneRes = new XmlSchemaSimpleTypeRestriction();
           phoneRes.BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
           XmlSchemaMaxLengthFacet phoneFacet1 = new XmlSchemaMaxLengthFacet();
           phoneFacet1.Value = "20";
           phoneRes.Facets.Add(phoneFacet1);
           phonetype.Content = phoneRes;
           XmlSchemaSimpleType notestype = new XmlSchemaSimpleType();
           XmlSchemaSimpleTypeRestriction notesRes = new XmlSchemaSimpleTypeRestriction();
           notesRes.BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
           XmlSchemaMaxLengthFacet notesFacet1 = new XmlSchemaMaxLengthFacet();
           notesFacet1.Value = "500";
           notesRes.Facets.Add(notesFacet1);
           notestype.Content = notesRes;
           XmlSchemaComplexType employeetype = new XmlSchemaComplexType();
           XmlSchemaSequence sequence = new XmlSchemaSequence();
           XmlSchemaElement firstname = new XmlSchemaElement();
           firstname.Name = "firstname";
           firstname.SchemaType = nametype;
           XmlSchemaElement homephone = new XmlSchemaElement();
           homephone.Name = "homephone";
           homephone.SchemaType = phonetype;
           XmlSchemaElement notes = new XmlSchemaElement();
           notes.Name = "notes";
           notes.SchemaType = notestype;
           sequence.Items.Add(firstname);
           sequence.Items.Add(homephone);
           sequence.Items.Add(notes);
           employeetype.Particle = sequence;
           XmlSchemaAttribute employeeid = new XmlSchemaAttribute();
           employeeid.Name = "employeeid";
           employeeid.SchemaTypeName = new XmlQualifiedName("int", "http://www.w3.org/2001/XMLSchema");
           employeeid.Use = XmlSchemaUse.Required;
           employeetype.Attributes.Add(employeeid);
           XmlSchemaComplexType complextype = new XmlSchemaComplexType();
           XmlSchemaSequence sq = new XmlSchemaSequence();
           XmlSchemaElement employee = new XmlSchemaElement();
           employee.Name = "employee";
           employee.SchemaType = employeetype;
           employee.MinOccurs = 0;
           employee.MaxOccursString = "unbounded";
           sq.Items.Add(employee);
           complextype.Particle = sq;
           XmlSchemaElement employees = new XmlSchemaElement();
           employees.Name = "employees";
           employees.SchemaType = complextype;
           schema.Items.Add(employees);
           XmlSchemaSet set = new XmlSchemaSet();
           set.Add(schema);
           set.rupile();
           XmlTextWriter writer=new XmlTextWriter("yourvalue",null);
           schema.Write(writer);
           writer.Close();
       }
   }</source>

Register Schema validation event

<source lang="csharp">using System; using System.IO; using System.Xml; using System.Xml.Schema; using System.Collections.Generic; using System.Text;

   class Program
   {
       static void Main(string[] args)
       {
           XmlDocument items = new XmlDocument();
           items.Load("items.xml");
           XmlSchema schema = XmlSchema.Read(new FileStream("items.xsd",FileMode.Open), new ValidationEventHandler(OnSchemaValidate));
           items.Schemas.Add(schema);
           items.Validate(new ValidationEventHandler(OnValidate));
           
       }
       static void OnValidate(object sender, ValidationEventArgs vargs)
       {
           Console.WriteLine(vargs.Message);
       }
       static void OnSchemaValidate(object sender, ValidationEventArgs vargs)
       {
           Console.WriteLine(vargs.Message);
       }
   }</source>

Schema Validation

<source lang="csharp">using System; using System.IO; using System.Xml; using System.Xml.Schema; using System.Collections.Generic; using System.Text;

   class Program
   {
       static void Main(string[] args)
       {
           XmlDocument items = new XmlDocument();
           items.Load("items.xml");
           XmlSchema schema = XmlSchema.Read(new FileStream("items.xsd",FileMode.Open), new ValidationEventHandler(OnSchemaValidate));
           items.Schemas.Add(schema);
           items.Validate(new ValidationEventHandler(OnValidate));
           
       }
       static void OnValidate(object sender, ValidationEventArgs vargs)
       {
           Console.WriteLine(vargs.Message);
       }
       static void OnSchemaValidate(object sender, ValidationEventArgs vargs)
       {
           Console.WriteLine(vargs.Message);
       }
   }</source>