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);
        }
    }
}

    


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=&#039;1.0&#039; encoding=&#039;utf-8&#039;?>
    <xs:schema attributeFormDefault=&#039;unqualified&#039; elementFormDefault=&#039;qualified&#039;
         xmlns:xs=&#039;http://www.w3.org/2001/XMLSchema&#039;>
      <xs:element name=&#039;Books&#039;>
       <xs:complexType>
        <xs:sequence>
         <xs:element maxOccurs=&#039;unbounded&#039; name=&#039;Book&#039;>
          <xs:complexType>
           <xs:sequence>
            <xs:element name=&#039;FirstName&#039; type=&#039;xs:string&#039; />
           <xs:element minOccurs=&#039;0&#039; name=&#039;MiddleInitial&#039;
                type=&#039;xs:string&#039; />
              <xs:element name=&#039;LastName&#039; type=&#039;xs:string&#039; />
            </xs:sequence>
            <xs:attribute name=&#039;type&#039; type=&#039;xs:string&#039; use=&#039;required&#039; />
          </xs:complexType>
        </xs:element>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:schema>";

        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.Add("", XmlReader.Create(new StringReader(schema)));

    }
}

    


Using ReplaceAll to Change an Element's Subtree

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XElement firstParticipant;
        XDocument xDocument = new XDocument(
          new XElement("Books", firstParticipant =
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "J"),
              new XElement("LastName", "R"))));
        Console.WriteLine(xDocument);
        firstParticipant.ReplaceAll(
             new XElement("FirstName", "C"),
             new XElement("LastName", "D"));
        Console.WriteLine(xDocument);
    }
}

    


Removing a Node's Content with RemoveAll

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
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", "J"),
              new XElement("LastName", "R")),
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "E"),
              new XElement("LastName", "B"))));
        Console.WriteLine(xDocument);
        xDocument.Element("Books").RemoveAll();
        Console.WriteLine(xDocument);
    }
}

    


Deleting a Sequence of Nodes with Remove

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
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", "J"),
              new XElement("LastName", "R")),
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "E"),
              new XElement("LastName", "B"))));
        xDocument.Descendants().Where(e => e.Name == "FirstName").Remove();
        Console.WriteLine(xDocument);
    }
}

    


Deleting a Specific Node with Remove

   
 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XElement firstParticipant;
        XDocument xDocument = new XDocument(
          new XElement("Books", firstParticipant =
            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);
        firstParticipant.Remove();
        Console.WriteLine(xDocument);
    }
}