c-sharp
  1. c-sharp-c-xml-parser

C# XML Parser

In C#, the System.Xml namespace provides classes for parsing and processing XML documents. An XML parser allows you to extract data from an XML document and use it in your application. In this tutorial, we'll discuss how to use the XmlReader and XmlDocument classes to parse XML in C#.

Syntax

Reading XML using XmlReader

The syntax for parsing XML using XmlReader is as follows:

using (XmlReader reader = XmlReader.Create("file.xml")) {
   while (reader.Read()) {
      // code to process XML
   }
}

This code creates an XmlReader object and reads the XML from a file called "file.xml". Inside the while loop, you can write code to process the XML.

Reading XML using XmlDocument

The syntax for parsing XML using XmlDocument is as follows:

XmlDocument doc = new XmlDocument();
doc.Load("file.xml");
XmlNodeList nodes = doc.GetElementsByTagName("node");
foreach (XmlNode node in nodes) {
   // code to process XML
}

This code creates an XmlDocument object and loads the XML from a file called "file.xml". The GetElementsByTagName method is used to retrieve a list of all nodes with the name "node". Inside the foreach loop, you can write code to process the XML.

Example

Let's say we have an XML file called "employees.xml" that contains information about employees. Here's an example of how to use XmlReader and XmlDocument to parse the XML file:

Using XmlReader

using (XmlReader reader = XmlReader.Create("employees.xml")) {
   while (reader.Read()) {
      if (reader.IsStartElement()) {
         switch (reader.Name) {
            case "employee":
               Console.WriteLine("Employee ID: " + reader.GetAttribute("id"));
               break;
            case "firstName":
               Console.WriteLine("First Name: " + reader.ReadString());
               break;
            case "lastName":
               Console.WriteLine("Last Name: " + reader.ReadString());
               break;
            case "age":
               Console.WriteLine("Age: " + reader.ReadString());
               break;
         }
      }
   }
}

This code creates an XmlReader object and reads the XML from the "employees.xml" file. Inside the while loop, we use reader.Read() to move to the next element in the XML. We then use the IsStartElement() method to check if the current element is a start element (i.e. an opening tag). Depending on the current element's name, we print out the corresponding information using the GetAttribute() and ReadString() methods.

Using XmlDocument

XmlDocument doc = new XmlDocument();
doc.Load("employees.xml");
XmlNodeList nodes = doc.GetElementsByTagName("employee");
foreach (XmlNode node in nodes) {
   Console.WriteLine("Employee ID: " + node.Attributes["id"].Value);
   Console.WriteLine("First Name: " + node["firstName"].InnerText);
   Console.WriteLine("Last Name: " + node["lastName"].InnerText);
   Console.WriteLine("Age: " + node["age"].InnerText);
}

This code creates an XmlDocument object and loads the XML from the "employees.xml" file. The GetElementsByTagName method is used to retrieve a list of all nodes with the name "employee". Inside the foreach loop, we use the Attributes property to get the value of the "id" attribute, and the InnerText property to get the values of the child nodes.

Output

When we parse the XML file using either XmlReader or XmlDocument, we'll get output that looks similar to this:

Employee ID: 1
First Name: John
Last Name: Smith
Age: 30
Employee ID: 2
First Name: Jane
Last Name: Doe
Age: 25

This output displays the information about each employee in the XML file.

Explanation

In the example above, we used XmlReader and XmlDocument to parse an XML file containing information about employees. We read the data from the file and printed it to the console. Each employee is represented by an XML element called "employee" with attributes for id, and child elements for first name, last name, and age. Inside the parsing loop, we extracted these values and printed them to the console.

Use

XML parsing is a common task in many applications. You can use C# XML parsing to extract data from an XML file, manipulate that data, and use it to drive further processing.

Important Points

  • XmlReader provides a low-level, forward-only way to read XML files, while XmlDocument provides a more flexible and powerful DOM-based parser.
  • XML parsing can be complex, and you should always validate the XML first to ensure it conforms to the expected format.
  • Depending on the XML structure, you can use different methods of getting attribute and element values with XmlReader and XmlDocument.

Summary

In this tutorial, we discussed how to use C# XML parsing using XmlReader and XmlDocument. We covered the syntax, example, output, explanation, use, and important points of C# XML parsing. With this knowledge, you can now use XmlReader and XmlDocument to parse XML documents in your C# applications.

Published on: