Introduction
In our last article, we started with an introduction to XML and created a physical XML file. Now, we will try to read from an existing XML file using the XmlReader class.
Before proceeding, go through my previous article: Get Started With XML Using C#.
Background
You need an existing XML file to implement this. Except this, we need a basic understanding of C# and XML file structures.
So, my XML file looks like:
- <?xml version="1.0" encoding="utf-8"?>
- <Students>
- <Student>
- <Name>Abhishek</Name>
- <Location>Dhanbad</Location>
- </Student>
- <Student>
- <Name>Aman</Name>
- <Location>Samastipur</Location>
- </Student>
- <Student>
- <Name>Vicky</Name>
- <Location>Munger</Location>
- </Student>
- <Student>
- <Name>Chandan</Name>
- <Location>Bhagalpur</Location>
- </Student>
- <Student>
- <Name>Ravi</Name>
- <Location>Dhanbad</Location>
- </Student>
- </Students>
Here, we have Students as the Root element and Student as the parent element for Name and Location.
So, in our code we will try to read data from the XML file.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Xml;
- namespace XMLdemo2
- {
- class Program
- {
- static void Main(string[] args)
- {
-
-
- using (XmlReader reader = XmlReader.Create(@"c:\users\gr33n synt4x\documents\visual studio 2010\Projects\XMLdemo2\XMLdemo2\myData.xml"))
- {
- while (reader.Read())
- {
- if (reader.IsStartElement())
- {
-
- switch (reader.Name.ToString())
- {
- case "Name":
- Console.WriteLine("Name of the Element is : " + reader.ReadString());
- break;
- case "Location":
- Console.WriteLine("Your Location is : " + reader.ReadString());
- break;
- }
- }
- Console.WriteLine("");
- }
- }
- Console.ReadKey();
- }
- }
- }
Explanation
So, we start with the using( ) statement. Inside that, we created a reference of XmlReader. Then assigned a reader stream of a XML file using the Create() method.
Now, we start reading the XML file and reader.Read() returns the Boolean value indicating whether there is a XML statement or not.
If Yes, then we try to check if the current statement contains a starting element or not using reader.IsStartElement().
Since we have a number of different element fields in the Student elements, we are using a switch block. All the cases are names of Element. Since we want an actual text string of the element, for that we used the ReadString(). Since it returns a string type.
Output