Csharp/C Sharp/XML LINQ/Schema Validating

Материал из .Net Framework эксперт
Версия от 11:34, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Creating an XSD Schema by Inferring Itfrom an XML Document

 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
          new XElement("Books",
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "A"),
              new XElement("LastName", "B")),
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "C"),
              new XElement("LastName", "D"))));
        Console.WriteLine(xDocument);
        xDocument.Save("bookparticipants.xml");
        XmlSchemaInference infer = new XmlSchemaInference();
        XmlSchemaSet schemaSet = infer.InferSchema(new XmlTextReader("bookparticipants.xml"));
        XmlWriter w = XmlWriter.Create("bookparticipants.xsd");
        foreach (XmlSchema schema in schemaSet.Schemas()) {
            schema.Write(w);
        }
        w.Close();
        XDocument newDocument = XDocument.Load("bookparticipants.xsd");
        Console.WriteLine(newDocument);
    }
}


Successfully Validating an XML Element

 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Linq;
using System.IO;
public class MainClass {
    public static void Main() {
        string schema =
          @"<?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="Books">
       <xs:complexType>
        <xs:sequence>
         <xs:element maxOccurs="unbounded" name="Book">
          <xs:complexType>
           <xs:sequence>
            <xs:element name="FirstName" type="xs:string" />
           <xs:element minOccurs="0" name="MiddleInitial"
                type="xs:string" />
              <xs:element name="LastName" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="type" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:schema>";
        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.Add("", XmlReader.Create(new StringReader(schema)));
    }
}


Validating an XML Document

 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
          new XElement("Books",
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "A"),
              new XElement("MiddleName", "Carson"),
              new XElement("LastName", "B")),
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "C"),
              new XElement("LastName", "D"))));
        Console.WriteLine(xDocument);
        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.Add(null, "bookparticipants.xsd");
        xDocument.Validate(schemaSet, (o, vea) => {
               Console.WriteLine(o.GetType().Name);
               Console.WriteLine(vea.Message);
           },true);
        foreach (XElement element in xDocument.Descendants()) {
            Console.WriteLine("Element {0} is {1}", element.Name,
              element.GetSchemaInfo().Validity);
            XmlSchemaElement se = element.GetSchemaInfo().SchemaElement;
            if (se != null) {
                Console.WriteLine(
                  "Schema element {0} must have MinOccurs = {1} and MaxOccurs = {2}{3}",
                  se.Name, se.MinOccurs, se.MaxOccurs, System.Environment.NewLine);
            } else {
                Console.WriteLine();
            }
        }
    }
}


Validating an XML Document with a Lambda Expression

 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
        new XElement("Books",
          new XElement("Book",
            new XAttribute("type", "Author"),
            new XAttribute("language", "English"),
            new XElement("FirstName", "A"),
            new XElement("LastName", "B")),
          new XElement("Book",
            new XAttribute("type", "Author"),
            new XElement("FirstName", "C"),
            new XElement("LastName", "D"))));
        Console.WriteLine(xDocument);
        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.Add(null, "bookparticipants.xsd");
        try {
            xDocument.Validate(schemaSet, (o, vea) => {
                     Console.WriteLine(o.GetType().Name);
                     Console.WriteLine(vea.Message);
                     throw (new Exception(vea.Message));
                 });
        } catch (Exception ex) {
            Console.WriteLine("Exception occurred: {0}", ex.Message);
        }
    }
}


Validating an XML Document with Default Validation Event Handling

 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
          new XElement("Books",
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "A"),
          new XElement("MiddleInitial", "C"),
              new XElement("LastName", "B")),
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "C"),
              new XElement("LastName", "D"))));
        Console.WriteLine(xDocument);
        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.Add(null, "bookparticipants.xsd");
        try {
            xDocument.Validate(schemaSet, null);
        } catch (XmlSchemaValidationException ex) {
            Console.WriteLine("Exception occurred: {0}", ex.Message);
        }
    }
}