XML APIs in .NET

The .NET Framework provides a comprehensive set of classes for working with XML (Extensible Markup Language). These APIs allow you to parse, create, manipulate, and validate XML documents and data.

Core XML Namespaces

The primary namespaces for XML manipulation in .NET are:

  • System.Xml: Provides fundamental classes for XML processing, including reading, writing, and parsing XML.
  • System.Xml.Linq: Offers a more modern and object-oriented approach to XML manipulation with LINQ to XML.
  • System.Xml.Schema: Enables validation of XML documents against XML Schema Definitions (XSD).
  • System.Xml.Serialization: Facilitates the serialization and deserialization of .NET objects to and from XML.

Key Classes and Concepts

XmlReader and XmlWriter

XmlReader and XmlWriter provide forward-only, read-only access to XML data. They are highly performant and suitable for processing large XML files.


// Example of XmlReader
using (XmlReader reader = XmlReader.Create("mydata.xml"))
{
    while (reader.Read())
    {
        switch (reader.NodeType)
        {
            case XmlNodeType.Element:
                Console.WriteLine($"Start Element: {reader.Name}");
                break;
            case XmlNodeType.Text:
                Console.WriteLine($"Text: {reader.Value}");
                break;
            case XmlNodeType.EndElement:
                Console.WriteLine($"End Element: {reader.Name}");
                break;
        }
    }
}
                    

XmlDocument

The XmlDocument class represents an XML document as a Document Object Model (DOM) tree. This allows for random access and modification of the XML structure.


XmlDocument doc = new XmlDocument();
doc.Load("mydata.xml");
XmlNodeList nodes = doc.GetElementsByTagName("book");
foreach (XmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
                    

LINQ to XML (System.Xml.Linq)

LINQ to XML provides a powerful and concise way to query and manipulate XML documents using Language Integrated Query (LINQ).


XDocument doc = XDocument.Load("mydata.xml");
var bookTitles = from book in doc.Descendants("book")
                 select book.Element("title").Value;

foreach (var title in bookTitles)
{
    Console.WriteLine(title);
}
                    

XML Schema (XSD) Validation

System.Xml.Schema allows you to validate XML documents against XSD schemas to ensure data integrity and conformity.


XmlReader reader = XmlReader.Create("data.xml");
reader.MoveToContent();

XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add(null, "schema.xsd");

// Set options for validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas = schemas;
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);

XmlReader validatingReader = XmlReader.Create(reader, settings);

while (validatingReader.Read()) { } // Process the validated document

void ValidationCallBack(object sender, ValidationEventArgs args)
{
    if (args.Severity == XmlSeverityType.Error)
    {
        Console.WriteLine($"Validation Error: {args.Message}");
    }
}
                    

XML API Reference